Java 有 GC 管理記憶體,但文件句柄、網絡連線、資料庫連線、螢幕繪圖資源等需顯式釋放,finally 確保無論是否拋出異常都執行清理。
Switch sw = new Switch();
try {
sw.on();
// 可能拋出異常的業務代碼
} catch (NullPointerException e) { ... }
catch (IllegalArgumentException e) { ... }
finally {
sw.off(); // 必執行
}
catch 捕獲時,finally 仍在異常向上傳播前執行。break/continue/return 同樣觸發 finally。try-finally 由內而外依序執行。finally 配合標籤 break/continue 消除了 Java 對 goto 的需求。