两者的区别是什么
try {
fooBar();
} finally {
barFoo();
}
和
try {
fooBar();
} catch(Throwable throwable) {
barFoo(throwable); // Does something with throwable, logs it, or handles it.
}
我更喜欢第二个版本,因为它让我可以访问Throwable。这两种变体之间是否存在逻辑上的差异或首选约定?
另外,有没有办法访问finally子句中的异常?
发布于 2010-05-18 14:17:43
try
用于运行可能引发异常的方法
catch
用于“捕捉”并停止该异常
finally
用于捕获或未捕获该异常所需的任何清理工作
try{
myObject.riskyMethod(); // run a method that may throw an exception
}
catch(Exception ex){
myLogger.log(ex.Message); // "catch" stop that exception
}
finally{
myObject = null; // clean up needed from that exception being caught
}
发布于 2016-02-12 00:01:58
Finally和catch块有很大的不同:
在catch块中,您可以响应抛出的异常。仅当存在未处理的异常,并且类型与catch块的参数中指定的类型匹配或为该异常的子类时,才执行此块。最后,无论是否引发异常,都会在try和catch块之后执行。
发布于 2015-10-14 16:26:24
在我的研究中,Finally块总是被执行的,它主要是“用于关闭任何打开的连接”,并销毁一些不必要的运行。
https://stackoverflow.com/questions/2854910
复制相似问题