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之前崩溃,或者有人可能会从计算机上拔出插头,或者火山可能会爆发,并在声明到达之前将计算机埋在熔岩之下,等等。。。