为什么从finally块抛出的异常会忽略从catch块抛出的异常?

时间:2018-10-17 10:36:36

标签: java exception-handling

有人可以给我一个为什么在这里忽略new Exception()的原因吗?

void bar() throws IOException { //no Exception declared, compilator is ok about that. Why?
 try{
   throw new EOFException();
 }
 catch(EOFException eofe){
   throw new Exception();
 }
 finally{
    throw new IOException();
 }
}

1 个答案:

答案 0 :(得分:5)

无论try块是否引发异常(无论是否具有return语句),始终执行finally块。

因此,finally块引发的异常-IOException-是您的方法抛出的唯一异常,并且无论try块的内容如何,​​它总是被抛出。因此,您的方法只需声明为throws IOException