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中的 怎麼樣,返回的值都不會改變,任然是...