-5

如果我有以下代码

try {
    //some stuff here
catch (Exception e) {
    throw new CustomException();
} finally {
    finalize();
}

CustomException已检查异常在哪里,

finally如果出现 ,会调用该块Exception吗?

编辑:也许“finalize()”是一个糟糕的措辞选择。我不是指 Object 的 finalize() 方法。我只是说需要完成一些清理代码。对此表示歉意。

4

6 回答 6

2

finally 总是被调用,不管异常甚至返回语句。

我建议检查它的文档

于 2013-10-31T15:18:17.687 回答
1

如果发生异常,它将始终被调用。就此而言,它将始终被称为句号。这就是它的用途。

于 2013-10-31T15:18:26.077 回答
1

finally总是被调用(即使你打电话return;),除非你打电话

System.exit();

trycatch阻止。

于 2013-10-31T15:19:54.363 回答
0

finally块总是被执行。它的设计目的是让您可以执行重要操作,而不管抛出任何异常,例如关闭流。

于 2013-10-31T15:22:43.213 回答
0

是的,finally无论发生什么,总是会执行,除非 JVM 在到达您的代码之前死亡。在这种情况下它甚至会被调用:

public boolean doSomething() throws Exception{
    boolean iDidIt = true;
    try{
        //attempt to do it
        return iDidIt;
    catch(Exception e){
        iDidIt = false;
        return iDidIt;
    } finally {
        System.out.println("Did something get done? "+iDidIt);
    }
}

无论如何,打印语句都会被打印出来。

于 2013-10-31T15:22:47.953 回答
0

在每种情况下都会调用 finally 块。

于 2013-10-31T15:18:31.990 回答