1. 程式人生 > >java中的try中的return和finally的執行順序問題

java中的try中的return和finally的執行順序問題

在TestTryReturn這個例子中的執行順序為:用debug進行除錯,會發現,先呼叫的是return,再呼叫finally,最後在呼叫return

public class TestTryReturn {

	public static void main(String[] args) {
		System.out.println(new TestTryReturn().testreturn());
	}
	static int testreturn()
	{
		int x=99;
		try
		{
			return x;
		}
		finally
		{
			System.out.println(x+1);
		}
	}
}

Return 並不是讓函式馬上返回,而是 return 語句執行後,將把返回結果放置進函式棧中,此時函式並不是馬上返回,它要執行 finally 語句後才真正開始返回。

在TestTryReturn這個例子中的執行順序為在TestTryReturn這個例子中的執行順序為在TestTryReturn這個例子中的執行順序為在TestTryReturn這個例子中的執行順序為:先執行test中的return中的func1(),在執行finally中的return中func2()

public class Ttest {
	public static void main(String[] args) {
		System.out.println(new Ttest().test());
	}

	int test() {
		try {
			return func1();
		} finally {
			return func2();
		}
	}

	int func1() {
		System.out.println("func1");
		return 1;
	}

	int func2() {
		System.out.println("func2");
		return 2;
	}
}


結論:finally 中的程式碼比 return 和 break 語句後執行

相關推薦

javatry、catch、finally執行順序

在面試的時候,經常會問到關於try、catch、finally相關的問題。總結一下。 case 1     try{ } catch{ } finally{ } return; public int condition1(){ try {

javap -c 基本用法,簡單位元組檔案解釋,分析try returnfinally執行順序問題

1、初始javap,通過javap命令檢視程式計數器、區域性變量表,運算元棧變化。 public class TestZhaZhaJavap { public int test() { int a=100; int b=200; int c=

javatryreturnfinally執行順序問題

在TestTryReturn這個例子中的執行順序為:用debug進行除錯,會發現,先呼叫的是return,再呼叫finally,最後在呼叫return public class TestTryReturn { public static void main(Strin

Java - 若tryreturn語句,finally執行嗎?在return之前還是之後呢?

內存空間 rgs -- 取消 turn all urn stat fin 會執行,在方法return動作之前,return語句執行之後,若finally中再有return語句,則此方法以finally的return作為最終返回,若finally中無return語句,則此方法

tryfinally都有return語句,執行哪一個return

try 中的 return 語句呼叫的函式先於 finally 中呼叫的函式執行,也就是說 try 中的 return 語句先執行,finally 語句後執行,但try中的 return 並不是讓函式馬上返回結果,而是 return 語句執行後,將把返回結果放置進函式棧中,此時函式並不是馬上

try...catch語句returnfinally到底誰先執行

寫在開頭 這個問題真的困擾了我很久,感覺簡直像一個哲學(?)問題。 私下和朋友們對這個問題討論了很久,又在網上查找了很多相關資料,終於還是把這個問題理清楚了。(自認為 ) 我的結論是:在try…catch語句中,當程式執行完return後的表示式後,會轉而執行finally語句塊

Javatryreturnfinally執行問題

對於如下的一段程式: package try_catch_finally_return; public class TCFRtest { private static void Test1() { try { System.out.println("tr

java異常處理finallyreturn語句的執行順序

finally程式碼塊的語句在return之前一定會得到執行 如果try塊中有return語句,finally程式碼塊沒有return語句,那麼try塊中的return語句在返回之前會先將要返回的值儲存,之後執行finally程式碼塊,最後將儲存的返回值返回,

try-catch-finally語句returnfinally的關係

public class TestTryCatch { public static void main(String[] args) { TestTryCatch test = new TestTryCatch(); int fun = test.fun();

try-catch-finally語句中用什麼方法退出或者不執行finally就直接退出並且returnfinally的執型順序是怎樣的

正常來說finally中的程式碼是一定會執行的。他和return的執行順序是在return執行之後但真正返回結果之前的中間執行,finally中新增return語句可以替換掉catch中的return語句從而可以證明這一點。但是我們可以通過制定system.exit(int

return情況下try,catchfinally執行順序

結論: 1、不管有木有出現異常,finally塊中程式碼都會執行; 2、當try和catch中有return時,finally仍然會執行; 3、finally是在return後面的表示式運算後執行的(此時並沒有返回運算後的值,而是先把要返回的值儲存起來,管

javatry/catch效能原理

部分內容轉載自http://blog.csdn.net/tao_zi7890/article/details/17584813 記得在做企業雲專案的時候,我接了兩個有意思的任務,一個是為幾個執行緒加很多的try/catch程式碼。catch的異常有好幾層,範圍最小的,或者說

try..catch..finally執行順序return

new lin name 改變 args catch 而是 變量 see 結論:1、不管有木有出現異常,finally塊中代碼都會執行;2、當try和catch中有return時,finally仍然會執行;3、finally是在return後面的表達式運算後執行的(此時並沒

Python之——Python的多程序執行

轉載請註明出處:https://blog.csdn.net/l1028386804/article/details/83042246 一、多程序 Python實現對程序的方式主要有兩種,一種方法是使用os模組中的fork方法,另一種方法是使用multiprocessing模組。區別在於:

Shell 指令碼的檔名匹配命令執行

理解下 shell 指令碼中的檔名匹配和命令執行的順序與結果。我們學習這個的目的是可以熟悉的在 shell 指令碼中寫出快速的找到檔案的命令。它可以匹配檔名中的任何字串,匹配檔名中的單個字元以及匹配檔名中的字母或數字符號。         首先我們來看看匹配檔案的符號

python的多程序執行

作者:liuyazhuang  來源:CSDN  原文:https://blog.csdn.net/l1028386804/article/details/83042246?utm_source=copy  轉載出處:https://blog.csdn.net/l102838

return情況下的try catch finally執行順序

結論: 1、不管有木有出現異常,finally塊中程式碼都會執行; 2、當try和catch中有return時,finally仍然會執行; 3、finally是在return後面的表示式運算後執行的(此時並沒有返回運算後的值,而是先把要返回的值儲存起來,管finally中的程

Java異常機制--try catch finally 執行順序詳解

引言 關於try catch finally 執行順序的筆試面試題目非常的多,我曾經在牛客網刷題的時候不止一次的碰到過,而且不止一次的做錯過,這裡面需要涉及的細節如果不弄清楚每次做題就會產生似是而非的感覺。這次查閱了很多相關資料,關於try catch fin

Handler訊息傳遞機制(子執行傳遞new Handler執行new Handle傳遞訊息)

> 子執行緒中更新UI new Thread(new Runnable() {         @Override         public void run() {             Looper.prepare();          

02-eclipse構建ant專案編譯執行ant

Eclipse中已經集成了Ant,我們可以直接在Eclipse中執行Ant。 1、用 Ant 來構建簡單系統 新建一個 Java project, 命名為Hello Hello .java 檔案內容 package example; publi