在try \ finally块中是否存在这样的情况,最终将不会被执行?

时间:2010-08-14 17:21:44

标签: java exception try-catch-finally finally

我正在攻读面向对象编程的测试,我想知道是否有任何案例,考虑到以下代码:

try {
    do something
} catch (someException e) {

} finally {
    do something
}

finally块不会执行?

4 个答案:

答案 0 :(得分:17)

是。如果您崩溃Java VM或以其他方式通过本机代码解决问题,导致程序终止,或在try块内无限循环/等待。

这是唯一会避免执行finally阻止的三种情况。

答案 1 :(得分:5)

如果您在System.exit(0)中致电try。或者制作使JVM退出或挂起的东西(如死锁)。否则 - 不。

答案 2 :(得分:2)

最终在try语句完成之前调用的Java语言规范guarantees

try语句可能无法完成,因为通常的原因已在Borealid的答案中列举。

答案 3 :(得分:0)

如果控件来自try或catch块,则finally块肯定会被执行。如果你有一些如何设法阻止控制从这些块出来:

  • 通过编写exit语句或

  • 无限循环等。

然后finally块将不会被执行。 通常我们为" 清理"编写finally块。目的