Java最终阻止并在方法级别抛出异常

时间:2011-06-30 17:30:01

标签: java exception-handling

readFileMethod1中,在将IOException抛出到方法级别之前显式捕获finally以确保执行readFileMethod2块。但是,是否需要捕获异常?如果我删除了finally中显示的catch块,那么private void readFileMethod1() throws IOException { try { // do some IO stuff } catch (IOException ex) { throw ex; } finally { // release resources } } private void readFileMethod2() throws IOException { try { // do some IO stuff } finally { // release resources } } 块也会被执行吗?

{{1}}

5 个答案:

答案 0 :(得分:7)

无论是否捕获IOException,finally仍然会被执行。如果你的所有catch块都重新抛出,那么这里没有必要。

答案 1 :(得分:4)

不,如果除了扔掉它之外什么都不做,那么捕获异常是完全没必要的。

是的,finally块仍将被执行。

答案 2 :(得分:2)

不,除非您不能在方法中重新抛出异常,否则无需捕获异常。在您发布的代码中,readFileMethod2是正确的选项。

答案 3 :(得分:1)

最终总是在try catch context中执行...有关详细信息,请检查http://download.oracle.com/javase/tutorial/essential/exceptions/finally.html

答案 4 :(得分:1)

无论是否抛出异常,

最终都会被执行。只有在执行try块或catch块时关闭JVM,才会执行finally子句。同样,如果执行try或catch代码的线程被中断或终止,则即使整个应用程序仍在继续,finally块也可能无法执行。