终于总是被召唤?

时间:2013-01-08 16:03:23

标签: java

  

可能重复:
  In Java, does return trump finally?

这个函数返回什么?

public int wasExceptionThrown() {
   try {
     if(1==1)
        throw new RuntimeException();
     return 1;
   } catch(Exception e) {
     return 2;
   } finally {
     return 3;
   }
   return 0;
}

2 个答案:

答案 0 :(得分:7)

如果您调用System.exit(0);,则不会调用finally块,因为线程会立即关闭。在所有其他情况下,当块退出时,会调用finally(假设它)

答案 1 :(得分:3)

最后调用before返回。

如果你调用System.exit()或者JVM首先崩溃,那么最后不会被调用的唯一时间。