關於JAVA中的異常那些事兒

背景

1.爲什麼會有異常機制

答:開發異常處理程序的原因是,如果爲每個發放所有可能發生的錯誤都進行處理的話,任務會顯得過於繁重,程序員也不願意這樣做1.

正文

1.在Java中,異常的種類體系如下所示:

這裏寫圖片描述

說明:其中所有異常都是從Throwable繼承而來,但我們程序員關注的只有右分支Exception子類體系,至於左分支Error類,是一般程序運行環境由於資源不足、約束失敗等不滿足程序執行條件造成的,這也不是我們能夠控制的。

2.當出現try/catch/finally語句塊與return並用時,無論return出現在try中,還是catch中,只要程序進入到二者中之一,那麼如果有finally語句,就一定會執行finally裏面的子句。

3.JAVA的catch機制是存在順序的,從上而下依次進行匹配,一旦發生異常將不在進行匹配,且子類的異常對象也可以匹配基類的異常Catch處理程序,因此儘量將高層次的異常放到後邊。

4.如果只是重新拋出異常,那麼printStackTrace()方法顯示的將是原來異常拋出點的調用棧信息,而非重新拋出點的信息。

5.對於右分支Exception體系:

(1)被檢查的異常:Exception類本身,及其子類(除RuntimeException)都屬於編譯時異常,要麼通過throws進行聲明拋出,要麼通過try/catch語句捕獲處理,否則不能編譯通過。我們自己定義的異常,如果直接繼承了Exception,那麼就屬於編譯時異常,是被編譯檢查的。
(2)運行時異常:RuntimeException類本身,及其子類(如ClassNotFoundException)都屬於運行時異常,不需要我們進行任何處理,會自動被上一級調用捕獲。

6.如果一個類中含有throws異常聲明,那麼它的子類也一定會有這些異常聲明,且類型保持一致。


  1. 來源於《java編程思想》
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章