пробовать/завоевывать популярность переполнения стека в Java?

Можно ли пробовать/ловить исключение из-за переполнения стека в Java? Это, кажется, бросается так или иначе. Когда мое переполнение процедур, я хотел бы "оштрафовать" то значение.

20
задан skaffman 29 March 2010 в 12:23
поделиться

4 ответа

Кажется, работает:

public class Test {

    public static void main(String[] argv){
        try{
            main(null);
        }
        catch(StackOverflowError e){
            System.err.println("ouch!");
        }
    }

}
29
ответ дан 29 November 2019 в 23:29
поделиться

Если вы получаете переполнение стека, вы, вероятно, пытаетесь использовать бесконечную рекурсию или серьезно злоупотребляете вызовами функций. Возможно, вы могли бы подумать о том, чтобы сделать некоторые из ваших процедур итеративными вместо рекурсивных или перепроверить, что у вас есть правильный базовый случай в вашей рекурсивной процедуре. Поймать исключение переполнения стека - плохая идея; вы лечите симптомы, не устраняя первопричину.

9
ответ дан 29 November 2019 в 23:29
поделиться

Вы должны поймать ошибку, а не исключение

4
ответ дан 29 November 2019 в 23:29
поделиться

Я согласен с Майклом - StackOverflowException - это сигнал о том, что что-то пошло не так. Глотать - не лучшая идея. Лучше всего устранить основную причину этой ошибки.

0
ответ дан 29 November 2019 в 23:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: