try-catch-finally
語句塊是用于處理異常和確保代碼塊在出現異常時執行特定操作的結構。其執行順序如下:
try
語句塊中的代碼。如果在此過程中沒有發生任何異常,則跳過 catch
和 finally
語句塊,繼續執行后續代碼。try
語句塊中發生了異常,那么控制流將立即跳轉到與該異常類型匹配的 catch
語句塊。執行相應的 catch
語句塊中的代碼。如果沒有找到匹配的 catch
語句塊,異常將向上拋出,直到被捕獲或導致程序終止。try
語句塊中是否發生異常,finally
語句塊都將執行。這對于清理資源(如關閉文件、數據庫連接等)非常有用。請注意,如果在執行 try
或 catch
語句塊期間發生了嚴重錯誤(例如,System.exit()
調用或線程中斷),則 finally
語句塊可能不會執行。以下是一個簡單的示例,說明了 try-catch-finally
語句塊的執行順序:
public class TryCatchFinallyExample {
public static void main(String[] args) {
try {
System.out.println("Inside try block");
// Code that might throw an exception
int result = 10 / 0; // This will cause an ArithmeticException
} catch (ArithmeticException e) {
System.out.println("Inside catch block");
// Handle the exception
} finally {
System.out.println("Inside finally block");
// Cleanup resources, if any
}
System.out.println("After try-catch-finally block");
}
}
輸出:
Inside try block
Inside catch block
Inside finally block
After try-catch-finally block
在這個示例中,我們故意在 try
語句塊中引發了一個異常(除以零)。因此,執行順序是:try
-> catch
-> finally
。在 finally
語句塊之后,程序繼續執行后續代碼。