Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在try\finally中阻止最终赢得的';不能被处决吗?_Java_Exception_Try Catch Finally_Finally - Fatal编程技术网

Java 在try\finally中阻止最终赢得的';不能被处决吗?

Java 在try\finally中阻止最终赢得的';不能被处决吗?,java,exception,try-catch-finally,finally,Java,Exception,Try Catch Finally,Finally,我正在为我的面向对象编程测试而学习,我想知道,考虑到下面的代码,是否存在这样的情况: try { do something } catch (someException e) { } finally { do something } 最后块将不执行?是。如果您通过本机代码使Java VM崩溃或以其他方式弄糟,请导致程序终止,或在try块中无限循环/等待 只有这三种情况才能避免执行finally块。如果调用系统。请在中退出(0),然后重试。或者使JVM退出或挂起(比如死锁)。否

我正在为我的面向对象编程测试而学习,我想知道,考虑到下面的代码,是否存在这样的情况:

try {
    do something
} catch (someException e) {

} finally {
    do something
}

最后
块将不执行?

是。如果您通过本机代码使Java VM崩溃或以其他方式弄糟,请导致程序终止,或在
try
块中无限循环/等待


只有这三种情况才能避免执行
finally
块。

如果调用
系统。请在
中退出(0)
,然后重试。或者使JVM退出或挂起(比如死锁)。否则-否。

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


try语句可能由于通常的原因而不完整,这在Borealid的回答中已经列举了。

如果控件来自try或catch块,finally块肯定会被执行。如果您想知道如何阻止控件脱离这些块:

  • 通过编写退出声明,或

  • 无限循环等

那么finally块将不会执行。
通常,我们编写finally块是为了“清理”目的。

拔掉插头就可以了。调用System.exit或打开计算机可能算作“导致程序终止”。…:-)如果在try块中,您从包含try/catch/finally短语的函数返回,finally块还会执行吗?@euphoria:当然,这是交易的一部分,当相应的
try
块中的代码在正常情况下退出时,
finally
块保证执行(包括正常异常)挑剔:如果catch块在finally之前执行,并且无休止的循环/等待也会阻止执行到达finally块。除此之外,我认为您得到了所有情况:-)“finally在try语句完成之前被调用”???try语句由try块、任何catch块和finally块(可选)组成时,不应“before”为“when”。