try...catch..finally中finally代码块是否一定会执行?

在Java中,try...catch..finally中finally代码块是否一定会执行?比如说下面这段代码。

try {  
    something();  
    return success;  
}  
catch (Exception e) {   
    return failure;  
}  
finally {  
    System.out.println("I don't know if this will get printed out");
}
finallyjavatry catch
2
231
小课
小课2022-05-06 18:50
1 个回答

除了在执行finally代码块之前出现了以下几种情况,finally代码块都会在执行完try...catch之后执行。

  • 调用了退出进程的方法,比如说Runtime.getRuntime().halt(int)、Runtime.getRuntime().exit(int)、System.exit(int)等。
  • 虚拟机发生崩溃或者虚拟机进程被系统强制终止。
  • finally所在的线程是守护线程(daemon thread),而其它所有的非守护线程都已经结束。
2
小课
小课2022-05-06 18:52
你的回答

内容