Java異常分為兩個主要的類:Throwable類和Exception類。
Throwable類是所有錯誤和異常的超類,它有兩個主要的子類:Error類和Exception類。
public class Throwable { private String detailMessage; private Throwable cause; }
Error類代表著Java運行時環境中的錯誤,這些錯誤無法被程序員或Java程序代碼處理。當這些錯誤發生時,程序無法恢復并且通常會崩潰。
public class Error extends Throwable { // ... }
Exception類是一個可以被Java程序員捕捉和處理的異常類。這個類是所有可以被Java程序員捕捉和處理的異常的超類。
public class Exception extends Throwable { // ... }
根據異常的類型和發生時機,Exception類又分為多個子類。常見的子類如下:
- IOException:當一個輸入/輸出(I/O)異常發生時,例如文件I/O或網絡通信時。
- ClassNotFoundException:當試圖加載類時找不到類或接口的定義時。
- RuntimeException:當程序發生邏輯錯誤或運行時異常時。
- NullPointerException:當程序試圖訪問一個空指針對象時發生。
- ArithmeticException:當程序試圖對一個數字執行除以零的操作時發生。
Exception類及其子類可以用try-catch語句捕獲和處理。它也可以用throws語句在方法簽名中聲明和傳遞異常。
try { // 可能拋出異常的代碼 } catch (IOException e) { // 處理IOException異常 } catch (ClassNotFoundException e) { // 處理ClassNotFoundException異常 } catch (Exception e) { // 處理其他未知(但是是Exception類的子類)的異常 } finally { // 不管有沒有異常,這里的代碼都會執行 }
在所有情況下都應該捕獲所有可能發生的異常,以防止程序發生意外崩潰或數據丟失。