Java 異常處理上篇: Throwable 詳解

張哥說技術發表於2024-02-01

來源:Lorin 洛林

前言

  • • Java 異常處理是編寫穩健、可靠程式的關鍵組成部分。在 Java 中,異常是一種程式執行時可能發生的錯誤或異常情況的表示。異常處理的核心是 Throwable 類及其子類,它們為我們提供了處理程式執行中出現的問題的機制。本文將深入探討 Throwable 類,探索其層次結構、常見的子類以及異常處理的常用關鍵字。

Java 異常處理上篇: Throwable 詳解

Throwable 類

  • • 在 Java 中,Throwable 是所有錯誤和異常的父類。它派生出兩個主要的子類:Error 和 Exception

Error

  • • Error 類表示嚴重的錯誤,通常是虛擬機器發生無法恢復的錯誤。程式設計師通常不需要直接捕獲或處理 Error,因為這類錯誤通常意味著系統出現了不可逆的問題。例如,OutOfMemoryError 表示記憶體不足,StackOverflowError 表示堆疊溢位等。

Java 異常處理上篇: Throwable 詳解

Exception

  • • Exception 類是所有異常的父類。它分為兩種:受檢異常(Checked Exception)和非受檢異常(Unchecked Exception)

Java 異常處理上篇: Throwable 詳解

受檢異常(Checked Exception)

  • • 受檢異常是在編譯時強制處理的異常,程式必須在程式碼中顯式地處理或者透過 throws 關鍵字宣告方法可能丟擲的受檢異常。典型的受檢異常包括 IOException、SQLException 等,它們表示程式在執行時可能遇到的外部因素導致的問題。

// try-catch 顯示處理
try {
    // 有可能丟擲 IOException 的程式碼
catch (IOException e) {
    // 處理 IOException
finally {
    // 無論是否發生異常,都會執行的程式碼
}

// throws 宣告可能丟擲的異常
private static void extracted() throws IOException {
    throw new IOException();
}

非受檢異常(Unchecked Exception)

  • • 非受檢異常是在執行時可能丟擲的異常,也稱為執行時異常(Runtime Exception)。它們通常是由程式邏輯錯誤引起的,無法在編譯時預測。典型的非受檢異常包括 NullPointerException、ArrayIndexOutOfBoundsException 等。

int[] array = {123};
int value = array[5]; // 丟擲 ArrayIndexOutOfBoundsException

異常處理關鍵字

  • • 在 Java 中,異常處理關鍵字包括 try、catch、finally 和 throw

try-catch

  • • try 塊用於包含可能丟擲異常的程式碼,而 catch 塊用於捕獲並處理這些異常。一個 try 塊可以包含多個 catch 塊,按照它們在程式碼中的順序依次匹配異常。

try {
    // 可能丟擲異常的程式碼
catch (ExceptionType1 e1) {
    // 處理 ExceptionType1 異常
catch (ExceptionType2 e2) {
    // 處理 ExceptionType2 異常
finally {
    // 無論是否發生異常,都會執行的程式碼
}

finally

  • • finally 塊用於包含無論是否發生異常都需要執行的程式碼。通常 finally 用於釋放資源,例如關閉檔案或資料庫連線。

try {
    // 可能丟擲異常的程式碼
catch (Exception e) {
    // 處理異常
finally {
    // 無論是否發生異常,都會執行的程式碼
    // 通常用於釋放資源
}

throw

  • • throw 關鍵字用於手動丟擲異常,以便在發生特定條件時觸發異常。它在方法體內部使用,將一個 Throwable 物件丟擲到呼叫者。

void checkAge(int age) {
    if (age < 0) {
        throw new IllegalArgumentException("Age cannot be negative");
    }
}

總結

  • • Java 異常處理是構建健壯程式的關鍵組成部分。Throwable 類及其子類為我們提供了處理程式執行中出現的問題的框架。透過合理使用 try、catch、finally 和 throw,我們能夠更好地控制程式的流程,增強程式的可維護性和穩定性。


來自 “ ITPUB部落格 ” ,連結:https://blog.itpub.net/70024923/viewspace-3006003/,如需轉載,請註明出處,否則將追究法律責任。