2013-01-08 28 views
3

可能重複:
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; 
} 
+11

你試過了嗎?希望你有一臺帶有java的電腦。 –

+2

回答標題,是的。 – Dylan

+0

首先,該函數不能編譯,因爲'return 1'是無法訪問的。 –

回答

7

如果你打電話System.exit(0);然後finally塊不被稱爲線程立即關機。在所有其他情況下finally在塊退出時被調用(假設它)

+1

或JVM先崩潰後再執行最後 –

+0

@NirmitSrivastava是的,信號崩潰而不是拋出錯誤。 –

3

最後調用before返回。

如果你調用System.exit()或者如果JVM先崩潰,最後唯一不會被調用的時間是。