Java 中 try、catch、finally 語句塊的執行順序


  • 假設代碼順序書寫如下:try → catch → finally → 其他代碼
  • 則:
    • 1、正常執行順序:try → catch → finally → 其他代碼
    • 2、try,catch和finally和其他代碼的執行條件:
      • 先執行try。
      • 只要try中有異常,catch就會執行;
      • finally總會執行;
      • 其他代碼:
        • 如果finally中沒有return:其他代碼會執行;
        • 如果finally中有return:其他代碼不會執行;
    • 3、方法的返回結果確定:
      • finally 有return:(finally中的return)
        • 返回結果為 finally 中的值,try(+catch,+ 其他代碼)的 return 值會被覆蓋掉。
          注:有return,其他代碼不會執行。所以finally就是最終執行的代碼。故返回結果為 finally 中的值。
      • finally 沒有return:(正常執行順序返回結果)
        • 返回結果就是正常代碼執行順序的返回結果。try(+catch,+ 其他代碼)的 return 會被寄存起來。一般 finally 不會修改返回值,除非 finally 修改了該引用指向的實際內存內容。
          注:沒有return,其他代碼會執行,finally不是最終執行的代碼。返回結果為正常執行順序的返回結果。
  • 參考:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM