根据Java指南,“如果执行
try或
catch代码的线程被中断或杀死,则
finally即使整个应用程序继续运行,该块也可能无法执行。”
这是完整的段落:
该
finally块 始终
在try退出时执行。这样可以确保finally即使发生意外异常也可以执行该块。但是,finally是的不仅仅是异常处理更加有用-
它允许程序员避免不慎被绕过具有清除代码return,continue或break。finally即使在没有例外的情况下,将清除代码放在块中始终是一个好习惯。注意:
如果在执行try或catch代码时JVM退出,则该finally块可能不会执行。同样,如果执行try或catch代码的线程被中断或杀死,则finally即使整个应用程序继续运行,该块也可能不会执行。
class Thread1 implements Runnable { @Override public void run() { try { Thread.sleep(10000); } catch (InterruptedException e) { e.printStackTrace(); } finally { System.out.println("finally executed"); } }}…
t1.start();t1.interrupt();
打印 -最终执行



