finally語句的執行分析

2021-07-09 14:43:07 字數 1032 閱讀 6767

2012-11-19 10:29

1466人閱讀收藏 

舉報

學習疑惑(6)

目錄(?)

[+]

public classtest

staticinttest()

finally

}---------執行結果 ---------

子子子子2

dddddddddd1

執行結果是1,為什麼呢?主函式呼叫子函式並得到結果的過程,好比主函式準備乙個空罐子,當子函式要返回結果時,先把結果放在罐子裡,然後再將程式邏輯返回到主函式。所謂返回,就是子函式說,我不執行了,你主函式繼續執行吧,這沒什麼結果可言,結果是在說這話之前放進罐子裡的。

public class smallt

public int  get()

finally}}

返回的結果是2。

我可以通過下面乙個例子程式來幫助我解釋這個答案,從下面例子的執行結果中可以發現,try中的return語句呼叫的函式先於finally中呼叫的函式執行,也就是說return語句先執行,finally語句後執行,所以,返回的結果是2。return並不是讓函式馬上返回,而是return語句執行後,將把返回結果放置進函式棧中,此時函式並不是馬上返回,它要執行finally語句後才真正開始返回。

在講解答案時可以用下面的程式來幫助分析:

public classtest

inttest()

finally

}intfunc1()

intfunc2()  }

-----------執行結果-----------------

func1

func2

結論:finally中的**比return和break語句後執行

finally 語句的妙用2

雖然標題說是finally 語句的妙用,但其實是finally 的錯誤用法。我們在編寫的時候應該時刻的避免這種情況的發生!言歸正傳,finally 語句的這個妙用的用途是丟失異常。如下 class veryimportantexception extends exception class hohu...

mysql 語句分析 MySQL語句執行分析

今天客戶那邊遇到乙個問題 多選檔案進行操作,資料量一大後台處理就特別慢,瀏覽器顯示504超時。為了驗證問題是否出在sql語句,所以用以下方法來分析 查詢sql執行記錄 explain 分析 mysql 語句執行時間 下面會分別介紹三個方法的開啟方法。查詢sql執行記錄 查詢日誌功能是否開啟 show...

finally語句包含return的情況

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