最终没有被击中的断点

时间:2018-12-20 11:52:11

标签: java breakpoints

我在搞弄一些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 :(得分:0)

之所以发生是因为,如果您看到代码,则在catch中无限循环地抛出函数

exampleMethod()调用exampleMethod2(),而exampleMethod2()调用exampleMethod(),因此您的函数循环,这就是为什么您得到StackoverFlowError的原因

尝试函数不自我调用

  public static void main(String [] args){
    SpringApplication.run(AuthApplication.class,args);
    尝试{
        System.out.println(“尝试中”);
        int num = 5/0;
    } catch(ArithmeticException e){
        System.out.println(“ in catch”);
        exampleMethod();
    }最后{
        System.out.println(); // <---此处的断点
        System.out.println(“ in finally”);
    }
}

静态void exampleMethod(){

}
 

在此示例中,刹车点最终被击中

答案 1 :(得分:0)

根据this answer最终被跳过,因为无限递归(同样,这个问题可能是重复的)

否则,我认为您应该重新编译整个项目。因此,即使删除该函数调用,也许编译后的类仍具有无限递归。

编辑

这是它起作用的证明。因此,请尝试重新编译它,删除缓存等,或者请给我们更多有关确切问题的描述。

enter image description here