我正在攻读面向对象编程的测试,我想知道是否有任何案例,考虑到以下代码:
try {
do something
} catch (someException e) {
} finally {
do something
}
finally
块不会执行?
答案 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块。目的