try-catch-finally的返回值問題

1、只有 try-catch 的情況下,如果不發生異常,則會返回  try 中的 return ; 如果發生異常,則會返回  catch 中的  return, try 中的 return 被蓋掉;

2、finally 中的 return 值會覆蓋 try 和 catch 中的 return 值。在正常情況(即程序正常執行try catch finally語句塊,不會在語句中出現退出程序、線程終止等特殊情況)下,都會執行finally語句塊,如果finally中有return,則程序會走finally中的return,如果沒有,則先執行try或者catch中的return,將其存入臨時棧中,執行完finally語句後才返回臨時棧中的值。

例1:如下代碼執行結果爲 7

catch和finally都包含return,會執行catch裏面的return語句,但並不返回。最終return的是finally裏面的值。

例2:如下代碼執行結果爲 9

catch中執行到return語句時,不會真正的return,即只是會計算return中的表達式,之後將本應返回的結果(本題爲9)保存在一個臨時棧中,接着執行finally中的語句,最後纔會從臨時棧中取出之前的結果返回。

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