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、無限循環)。finally 中使用 return/throw/break/continue 干擾主流程返回。try-with-resources 自動管理 AutoCloseable 資源,更簡潔安全。