finally會執行嗎

   如下代碼,finally裏的代碼是否會執行?

public class MainQueue {
	public static void main(String args[]) {
		System.out.println(MainQueue.test());
	}
	public static int test() {
		try {
			return 0;
		} finally {
			System.out.println("finally trumps return.");
		}
	}
}
    答案是會執行,而且是先執行finally裏的代碼,然後再返回return語句!但是,有兩種情況下finally是不會執行的

(1)調用了System.exit()。

(2)JVM在finally之前就掛了,注意是JVM掛了,而不是指程序異常,比如即使在finally之前有空指針異常,finally裏的代碼依然會執行的。


  (此處插個題外話,在JDK1.7及其之後的版本的switch語句都支持String case語句了,其以前的都只能用int很肯爹有木有!)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章