天天看點

又抛異常了?可能你對Java的異常體系還沒了解到位又抛異常了?可能你對Java的異常體系還沒了解到位

又抛異常了?可能你對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的異常體系有所幫助:

總結

❤️ 感謝大家

  1. 歡迎關注我❤️,點贊👍🏻,評論🤤,轉發🙏
  2. 關注

    盼盼小課堂

    ,定期為你推送好文,還有群聊不定期抽獎活動,可以暢所欲言,與大神們一起交流,一起學習。
  3. 有不當之處歡迎批評指正。