首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java return 與 finally 執行順序鐵律:finally 永遠執行

     編輯:Java 相關知識

代碼驗證

String s = "1";
try {
    s = "2";
    System.out.println(s); // 2
    return;
} catch (Exception e) {
    s = "3";
    System.out.println(s);
} finally {
    s = "4";
    System.out.println(s); // 4
}
s = "5";
System.out.println(s); // 不執行

輸出:2, 4

鐵律

  • try 中遇到 return,方法**不會立即返回**,而是先執行 finally 塊,然後再返回。
  • finally 中修改返回值(若返回引用類型並修改其內部狀態)會影響最終結果;若 finally 中也有 return,會**覆蓋**原返回值(強烈不建議)。
  • catch 塊未匹配異常時不執行;finally **無條件執行**(除非 System.exit()、JVM Crash、無限循環)。

最佳實踐

  1. 資源釋放(關閉流、釋放鎖、歸還連接)**必須放在 finally**。
  2. 避免在 finally 中使用 return/throw/break/continue 干擾主流程返回。
  3. Java 7+ 推薦 try-with-resources 自動管理 AutoCloseable 資源,更簡潔安全。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved