在我们日常写业务代码中经常会使用try-catch-finally,通常来讲,finally语句块中无论是否捕获或处理异常,finally里的语句都会被执行,所以我们会将一些资源的释放(如流文件的关闭)工作放在finally中处理。那么finally在什么情况下会不执行呢?
finally在如下的几种情况下是不执行的:
(1)程序没有进入到try语句块上,就因为异常导致程序终止。
(2)在try或cache语句块中执行了System.exit(0)语句,导致JVM直接退出。
(3)程序所在的线程死亡了,如当所有的非守护线程中止时,那么守护线程会被杀死,守护线程中的finally代码块是不会执行。
(4)try-catch中出现死循环。
文章转载自龙虾编程,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




