java中 try catch finally return執行的順序

    小瘋以前遇到一個問題,就是關於return和finally的執行順序問題,其實關於這個問題小瘋許久以前在一篇博客中看到了解答,不過因爲時間間隔找不到了,因此小瘋今天在這裏記錄一下:java

    執行順序是:先try 如有異常就catch,而後finally,以後執行catch中的return,若是finally中也有return,那麼久直接出去不執行catch中的return。code

 一、finally中也有return語句以下:博客

public class TryTest {


	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println(TryTest.test());

	}
	public static String test() {
		 try {
	            System.out.println("try");
	            throw new Exception();
	        } catch(Exception e) {
	            System.out.println("catch");
	            return "return"; 
	        } finally {  
	            System.out.println("finally");
	            return "return in finally"; 
	        }
	}

}

執行結果以下:io

tryclass

catchtest

finally異常

return in finallystatic

可見順序是先執行try中的輸出語句而後在異常處調到catch語塊,而後執行到catch中的return處沒有執行return而是跳轉到finally中執行。時間

二、finally中沒有return語句:co

public class TryTest {


	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println(TryTest.test());

	}
	public static String test() {
		 try {
	            System.out.println("try");
	            throw new Exception();
	        } catch(Exception e) {
	            System.out.println("catch");
	            return "return"; 
	        } finally {  
	            System.out.println("finally");
	            //return "return in finally"; 
	        }
	}

}

執行結果以下:

try

catch

finally

return

可見執行順序是先執行try中的輸出語句而後在異常處調到catch語塊,而後執行過catch的輸出語句跳轉到finally中執行以後返回到catch中的return語句。

相關文章
相關標籤/搜索