Java 中 try、catch、finally 語句塊的執行順序
- 假設代碼順序書寫以下:try → catch → finally → 其餘代碼
- 則:
- 一、正常執行順序:try → catch → finally → 其餘代碼
- 二、try,catch和finally和其餘代碼的執行條件:
- 先執行try。
- 只要try中有異常,catch就會執行;
- finally總會執行;
- 其餘代碼:
- 若是finally中沒有return:其餘代碼會執行;
- 若是finally中有return:其餘代碼不會執行;
- 三、方法的返回結果肯定:
- finally 有return:(finally中的return)
- 返回結果爲 finally 中的值,try(+catch,+ 其餘代碼)的 return 值會被覆蓋掉。
注:有return,其餘代碼不會執行。因此finally就是最終執行的代碼。故返回結果爲 finally 中的值。
- finally 沒有return:(正常執行順序返回結果)
- 返回結果就是正常代碼執行順序的返回結果。try(+catch,+ 其餘代碼)的 return 會被寄存起來。通常 finally 不會修改返回值,除非 finally 修改了該引用指向的實際內存內容。
注:沒有return,其餘代碼會執行,finally不是最終執行的代碼。返回結果爲正常執行順序的返回結果。
- 參考:
歡迎關注本站公眾號,獲取更多信息