在 Java 異常處理機制中,finally 關鍵字扮演著至關重要的角色。它確保無論是否發生異常,特定代碼塊都會被執行,是資源釋放、連接關閉等清理工作的最佳位置。
初學者常混淆 final 和 finally,兩者用途截然不同:
finally 塊在以下情況均會執行:
return 語句前(注意:若 try 中有 return,finally 仍會在返回前執行)Java代碼
public final class FinallyTest {
public static void main(String[] args) {
try {
throw new NullPointerException();
} catch (NullPointerException e) {
System.out.println("程序拋出了異常");
} finally {
System.out.println("執行了finally語句塊");
}
}
}
Lock.unlock() 在 finally 中調用,防止死鎖不要在 finally 中拋出異常或執行 return,這會吞噬 try/catch 中的原始異常或返回值,導致調試極其困難。Java 7+ 推薦使用 try-with-resources 自動管理實現 AutoCloseable 的資源,更優雅安全。