是否总是使用Java执行finally块?
考虑到此代码,我是否可以绝对确定该finally
块始终执行,无论它是什么something()
?
try { something();
return success;
}
catch (Exception e) {
return failure;
}
finally {
System.out.println("I don't know if this will get printed out");
}
回答:
是的,finally
将在执行try
或catch
代码块后调用。
唯一finally
不会被调用的时间是:
- 如果你调用
System.exit()
- 如果你调用
Runtime.getRuntime().halt(exitStatus)
- 如果JVM首先崩溃
- 如果JVM在
try
或catch块中达到了无限循环(或其他不间断,不终止的语句) - 操作系统是否强行终止了JVM进程;例如,
kill -9 <pid>
在UNIX上 - 如果主机系统死机;例如,电源故障,硬件错误,操作系统崩溃等
- 如果该
finally
块将由守护程序线程执行并且所有其他非守护程序线程在finally
调用之前退出
以上是 是否总是使用Java执行finally块? 的全部内容, 来源链接: utcz.com/qa/400147.html