是否finally块总是在Java中执行?推荐| Java Debug 笔记

1,104 阅读1分钟

本文正在参加「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");
}

高分回答:

很多的知识点,真的需要写出来才会掌握!!! \color{purple}很多的知识点,真的需要写出来才会掌握!!!{~}

是的,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块腹肌的我来说真的 非常有用!!!

如果本篇博客有任何错误,请批评指教,不胜感激 !❤️❤️❤️❤️