Java中的異常處理2_受檢異常與非受檢異常
阿新 • • 發佈:2020-11-17
1.概述
1.1異常體系
所有異常都繼承自java.lang.Throwable,它有兩個直接的子類Error與Exception.
1.2受檢異常與非受檢異常
Java compiler要求所有的Exception 要麼被catch,要麼被throw,除非這是一個RuntimeExeption .
- 受檢異常 checked exception
也就是說,通常的Exception一定要被處理,也即我們所說的
- 非受檢異常 unchecked exception
而RuntimeException不強制要求處理,(當然你自己要處理也可以),所以我們稱為.
2.詳述
2.1 受檢異常
受檢異常是在編譯時期有編譯器檢測的異常,必須要處理異常.
繼承於Exception
A.異常類
public class MyException extends Exception{
//自定義異常通常實現兩個構造器
//一個是預設的構造器,另一個是帶有詳細資訊的構造器.
public MyException() {
}
public MyException(String message) {
super(message);
}
}
B.測試類
可以看到處理方式
2.2 非受檢異常
非受檢異常是在執行時期的異常,即編譯器不會檢測異常,需要時也可以捕獲異常.
非受檢異常繼承於RuntimeException
A.異常類
public class MyException extends RuntimeException{
//自定義異常通常實現兩個構造器
//一個是預設的構造器,另一個是帶有詳細資訊的構造器.
public MyException() {
}
public MyException(String message) {
super(message);
}
}
B.測試類
3.總結
當我們這個方法丟擲了一個受檢異常後,就明確的告訴了方法的呼叫者,你必須得處理我這個異常.
看看這個:fdsfdsfwefwsadsadasdasdasdasdeException
???
-
如果丟擲的異常我們不熟悉,例如發現是上面這個,又強制要求我們處理,那怎麼處理?
-
不知道
索性就不要求強制處理唄,變成一個非受檢異常好了,寫程式碼的時候編譯器就不會檢查你,所以沒有劃紅線來噁心你.
非受檢異常(執行時異常)如果不處理,寫程式碼的時候(編譯)不報錯,而是在執行時報錯.
-
啊那執行時報錯不是更頭疼?
-
咋的交給你好像你能處理一樣.
記得RuntimeException是繼承與Exception的,所以可以這樣.
public static void main(String[] args) {
try {
divisionSome(5, 0);
} catch (Exception e) {
System.out.println("我直接給你全部捕獲");
}
}
結果
我直接給你全部捕獲