異常是程序運行過程中發生的錯誤事件,Java 提供完善的異常處理機制。本文系統梳理異常分類、繼承體系、常用內置異常、核心方法及捕獲語法。
| 類型 | 特點 | 典型例子 |
|---|---|---|
| 檢查性異常 | 編譯期強制處理,程序員無法預見 | FileNotFoundException、IOException |
| 運行時異常 | 編譯期可忽略,程序員邏輯錯誤可避免 | NullPointerException、ArrayIndexOutOfBoundsException |
| 錯誤 | JVM 層級嚴重問題,程序無法恢復 | OutOfMemoryError、StackOverflowError |
運行時異常 (java.lang) :
檢查性異常 (java.lang) :
try {
// 保護代碼:可能拋出異常的業務邏輯
} catch (ExceptionName e) {
// 異常處理代碼
}
public class Test {
public static void main(String[] args) {
try {
int a[] = new int[2];
System.out.println("Access element three: " + a[3]);
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("Exception thrown: " + e);
}
System.out.println("Out of the block");
}
}
try {
file = new FileInputStream(fileName);
x = (byte) file.read();
} catch (IOException i) {
i.printStackTrace(); return -1;
} catch (FileNotFoundException f) {
f.printStackTrace(); return -1;
}
關鍵規則:子類異常必須寫在父類前面,否則父類捕獲會屏蔽子類處理邏輯。
下篇將深入講解 finally 塊、throw/throws 關鍵字、自定義異常及最佳實踐原則。