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

Dav*_*ave 13 java exception finally try-catch-finally

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

try {
    do something
} catch (someException e) {

} finally {
    do something
}
Run Code Online (Sandbox Code Playgroud)

finally块不会执行?

Bor*_*lid 17

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

这是避免执行该finally块的唯一三种情况.

  • 调用System.exit或转动计算机可能算作"导致程序终止"...... :-) (3认同)
  • @euphoria:是的,当然,这是交易的一部分,当相应的`try`块内的代码在正常情况下退出(包括正常的异常)时,保证执行`finally`块 (2认同)

Boz*_*zho 5

如果你打电话System.exit(0)try.或者制作使JVM退出或挂起的东西(如死锁).否则 - 不.