本文正在参加「Java主题月 - Java Debug笔记活动」,详情查看活动链接
提问:是否finally块总是在Java中执行?
考虑到此代码,我是否可以绝对确定该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 在UNIX上
-
如果主机系统死机;例如,电源故障,硬件错误,操作系统崩溃等
-
如果该finally块将由守护程序线程执行并且所有其他非守护程序线程在finally调用之前退出
文章翻译自 am2dgbqfb6mk75jcyanzabc67y-ac4c6men2g7xr2a-stackoverflow-com.translate.goog/questions/6…
作者建议:我回答不了这么多,高手在全球!
真心感谢帅逼靓女们能看到这里,如果这个文章写得还不错,觉得有点东西的话
求点赞👍 求关注❤️ 求分享👥 对8块腹肌的我来说真的 非常有用!!!
如果本篇博客有任何错误,请批评指教,不胜感激 !❤️❤️❤️❤️