又抛異常了?可能你對Java的異常體系還沒了解到位
什麼?這是誰的代碼,抛出了大量的異常,這下全完了!寫個代碼抛出異常讓人頭疼,這篇文章就帶你了解一下讓你頭疼的異常
異常的捕捉
所有的異常都是Exception類的子類,是以我們在try catch捕捉異常的時候不指名具體異常的話就直接catch Exception,這樣所有的異常都會被攔截。對應catch捕捉異常的比對,遵循就近原則,如果多個異常捕捉,第一個異常的捕捉比對成功了,後面的異常捕捉就無需執行了。
下面這個例子展現了這一異常比對邏輯:
try {
throw new Xpp();
} catch(Xpp s) {
System.out.println("Caught Xpp");
} catch(XppBase a) {
System.out.println("Caught XppBase");
}
Xpp繼承XppBase,像Xpp異常比對成功了,第二個異常捕捉的處理就不執行了,同理,調換他們的位置,對XppBase的捕捉生效,第二個異常捕捉得不到執行。
Throwable類
Throwable類有兩個異常的子類,Error和Exception。Error類表示的時候編譯時和系統的錯誤,一般不用管這個類。Exception類是我們程式員需要處理的類。RuntimeException是運作時異常,一般是代碼邏輯寫的有問題導緻的,比如空指針、數組越界等等。
Exception類
Exception類繼承了Throwable類,Throwable類提供了getMessage()方法用來擷取詳細資訊,提供printStackTrace()方法列印調用棧路徑。
下面這張圖說明了我們上面提到了類的之間的關系,希望對你了解Java的異常體系有所幫助:
總結
❤️ 感謝大家
- 歡迎關注我❤️,點贊👍🏻,評論🤤,轉發🙏
- 關注
,定期為你推送好文,還有群聊不定期抽獎活動,可以暢所欲言,與大神們一起交流,一起學習。盼盼小課堂
- 有不當之處歡迎批評指正。