java最终阻止并检查异常

java最终阻止并检查异常,java,exception,Java,Exception,如果我有以下代码 try { //some stuff here catch (Exception e) { throw new CustomException(); } finally { finalize(); } 其中CustomException是选中的异常 如果出现异常,是否会调用最终块 编辑: 也许“finalize()”是一个糟糕的措辞选择。我不是指Object的finalize()方法。我的意思是有清理代码需要完成。对此表示歉意。始终调用Finally,

如果我有以下代码

try {
    //some stuff here
catch (Exception e) {
    throw new CustomException();
} finally {
    finalize();
}
其中
CustomException
是选中的异常

如果出现
异常
,是否会调用
最终

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

始终调用Finally,而不管异常甚至返回语句


我建议检查它。

如果出现异常,它将始终被调用。就这一点而言,它将永远被称为句号。这就是它的用途。

最后,在每种情况下都会调用block

始终调用
finally
(即使您调用
return;
),除非您调用

System.exit();

try
catch
块中。

始终执行
最终
块。它的设计使您可以执行重要的操作,而不管抛出任何异常,例如关闭流。

是的,
最终总是执行,无论发生什么情况,除非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);
    }
}

不管发生什么,print语句都会被打印。

最后总是调用
块。是的,但是您必须捕获
CustomException
,或者声明它是从封闭方法中抛出的。有一种更简单的方法让您找到它。@SJuan76几乎总是这样。Java可能会在它被称为…@Shade之前崩溃,或者有人可能会从计算机上拔出插头,或者火山可能会爆发,并在声明到达之前将计算机埋在熔岩之下,等等。。。