java中的Checked Exception和Unchecked Exception的區別
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 |
小結:
檢查性異常: 不處理編譯不能通過
非檢查性異常:不處理編譯可以通過,如果有丟擲直接拋到控制檯。
執行時異常: 就是非檢查性異常
非執行時異常: 就是檢查性異常