Java 定義了兩種異常:
- Checked exception: 繼承自 Exception 類是 checked exception。代碼需要處理 API 拋出的 checked exception,要么用 catch 語句,要么直接用 throws 語句拋出去。
- Unchecked exception: 也稱 RuntimeException,它也是繼承自 Exception。但所有 RuntimeException 的子類都有個特點,就是代碼不需要處理它們的異常也能通過編譯,所以它們稱作 unchecked exception。RuntimeException(運行時異常)不需要try...catch...或throws 機制去處理的異常。
NullpointerException 的繼承級別。
NullpointerException 繼承自 RuntimeException,所以它是個 unchecked exception。
最常用的五種RuntimeException:
ArithmeticException |
int a=0; |
ClassCastException: |
Object x = new Integer(0); |
IndexOutOfBoundsException |
int [] numbers = { 1, 2, 3 }; |
IllegalArgumentException |
int a = Interger.parseInt("test"); |
NullPointerExceptionextends |
|
小結:
檢查性異常: 不處理編譯不能通過
非檢查性異常:不處理編譯可以通過,如果有拋出直接拋到控制台。
運行時異常: 就是非檢查性異常
非運行時異常: 就是檢查性異常