Точка останова в `finally` не была достигнута - PullRequest
0 голосов
/ 20 декабря 2018

Я возился с некоторыми try...catch...finally выполнениями и заметил, что точка останова в finally, похоже, не будет достигнута:

    try {
        System.out.println("in try");
        int num = 5 / 0;
    } catch (ArithmeticException e) {
        System.out.println("in catch");
    } finally {
        System.out.println(); //breakpoint here
        System.out.println("in finally");
    }

Точка останова в finally, похоже, неУдар, однако он распечатывается успешно.

Однако, если я изменю значение try на int num = 5 / 1; и, следовательно, не перейду к catch, точка останова будет равна .

Я использую Netbeans 8.1.

Есть ли причина для этого?

Ответы [ 2 ]

0 голосов
/ 20 декабря 2018

Согласно этот ответ наконец пропускается, потому что бесконечная рекурсия (также этот вопрос может быть дубликатом этого)

Или, если нет, я думаю, что вам следует перекомпилировать весь проект.Поэтому, даже если вы удалите этот вызов функции, возможно, скомпилированные классы по-прежнему будут иметь эту бесконечную рекурсию.

EDIT

Вот доказательство того, что это работает.Поэтому, пожалуйста, попробуйте перекомпилировать его, удалить кэши и т. Д., Или, пожалуйста, дайте нам немного больше информации о точной проблеме.

enter image description here

0 голосов
/ 20 декабря 2018

происходит потому, что в catch вы бесконечно зацикливаете функции throw, если видите, что ваш код

exampleMethod () вызывает exampleMethod2 (), а exampleMethod2 () вызывает exampleMethod (), поэтому у вас есть цикл с функцией, поэтомувы получаете StackoverFlowError

попытаться, чтобы функции не вызывали себя

    public static void main(String[] args) {
    SpringApplication.run(AuthApplication.class, args);
    try {
        System.out.println("in try");
        int num = 5 / 0;
    } catch (ArithmeticException e) {
        System.out.println("in catch");
        exampleMethod();
    } finally {
        System.out.println(); // <--- breakpoint here
        System.out.println("in finally");
    }
}

static void exampleMethod() {

}

в этом примере, после достижения тормозной точки в окончании

...