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不是最終執行的代碼。返回結果爲正常執行順序的返回結果。
  • 參考:
相關文章
相關標籤/搜索