finally代码一定会执行吗

finally代码一定会执行吗,第1张

(1) try语句没有被执行到 ,如在try语句之前return就返回了,这样finally语句就不会执行。这也说明了finally语句被执行的必要而非充分条件是知行陪:相应的try语句一定被执行搭蠢到

(2)如果当一个线程在执行 try 语句块或者 catch 语句块时 被打断(interrupted)或者被终止(killed), 与其相对应的 finally 语句块可能不会执行。

(3)在try块|catch块中有 System.exit(0) 这样的语句。System.exit(0)是 终止Java虚拟机JVM 的,连JVM都停止了,所有都结束了,当然finally语句也不会被执行到带芦。还有更极端的情况,就是在线程运行 try 语句块或者 catch 语句块时,突然死机或者断电,finally 语句块肯定不会执行了。

(4)如果finally是在 守护线程 里面,如果其他线程都执行完了,守护线程需要立即停止,退出虚拟机,这时候finally也有可能没有执行。

在try-catch-finally中, 当return遇到finally,return对finally无效,即:

1.在try catch块里return的时候,finally也会被执行。

2.finally里的return语句会把try catch块里的return语句效果给覆盖掉。

具体的示例可以参考文章: https://blog.csdn.net/qq_39135287/article/details/78455525?spm=1001.2101.3001.6650.6&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-6.no_search_link&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-6.no_search_link

你是怎么判断的没有执行么?你返回的值是try里面的,当然你看不出来finally执行了,你把如turn写到finally里你在试试。

你这样写其乱没实,finally里面是执行了宴亮,但是你晌陪宽没有返回输出这里面的x值而已。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12419592.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存