前提:代碼已進入 try 塊。什麼情況下 finally 不會執行?
try {
System.exit(0); // JVM 直接退出,finally 無機會執行
} finally {
System.out.println("不會打印");
}
Runtime.getRuntime().halt(0):強制終止 JVM,不運行關閉鉤子。kill -9、任務管理器結束進程)。System.exit() 後,註冊的 ShutdownHook 會運行,但 finally 不會。return / throw Exception / 正常結束 → **finally 都會執行**。System.exit() 觸發 JVM 關閉流程,直接跳過棧展開。try-with-resources 同理,close() 也不會被調用。這道題考察對 JVM 生命周期與異常處理機制的深度理解。