Можно ли пробовать/ловить исключение из-за переполнения стека в Java? Это, кажется, бросается так или иначе. Когда мое переполнение процедур, я хотел бы "оштрафовать" то значение.
Кажется, работает:
public class Test {
public static void main(String[] argv){
try{
main(null);
}
catch(StackOverflowError e){
System.err.println("ouch!");
}
}
}
Если вы получаете переполнение стека, вы, вероятно, пытаетесь использовать бесконечную рекурсию или серьезно злоупотребляете вызовами функций. Возможно, вы могли бы подумать о том, чтобы сделать некоторые из ваших процедур итеративными вместо рекурсивных или перепроверить, что у вас есть правильный базовый случай в вашей рекурсивной процедуре. Поймать исключение переполнения стека - плохая идея; вы лечите симптомы, не устраняя первопричину.
Я согласен с Майклом - StackOverflowException - это сигнал о том, что что-то пошло не так. Глотать - не лучшая идея. Лучше всего устранить основную причину этой ошибки.