轉自:https://www.jianshu.com/p/e8bbee3c1c4ajava
Error類和Exception類的父類都是throwable類,他們的區別是:程序員
Error類通常是指與虛擬機相關的問題,如系統崩潰,虛擬機錯誤,內存空間不足,方法調用棧溢等。對於這類錯誤的致使的應用程序中斷,僅靠程序自己沒法恢復和預防,遇到這樣的錯誤,建議讓程序終止。
Exception類表示程序能夠處理的異常,能夠捕獲且可能恢復。遇到這類異常,應該儘量處理異常,使程序恢復運行,而不該該隨意終止異常。
Exception類又分爲運行時異常(Runtime Exception)和受檢查的異常(Checked Exception ),運行時異常;ArithmaticException,IllegalArgumentException,編譯能經過,可是一運行就終止了,程序不會處理運行時異常,出現這類異常,程序會終止。而受檢查的異常,要麼用try。。。catch捕獲,要麼用throws字句聲明拋出,交給它的父類處理,不然編譯不會經過。數組
①.Exception(異常)是應用程序中可能的可預測、可恢復問題。通常大多數異常表示中度到輕度的問題。異常通常是在特定環境下產生的,一般出如今代碼的特定方法和操做中。在 EchoInput 類中,當試圖調用 readLine 方法時,可能出現 IOException 異常。
Exception 類有一個重要的子類 RuntimeException。RuntimeException 類及其子類表示「JVM 經常使用操做」引起的錯誤。例如,若試圖使用空值對象引用、除數爲零或數組越界,則分別引起運行時異常(NullPointerException、ArithmeticException)和 ArrayIndexOutOfBoundException。
②.Error(錯誤)表示運行應用程序中較嚴重問題。大多數錯誤與代碼編寫者執行的操做無關,而表示代碼運行時 JVM(Java 虛擬機)出現的問題。例如,當 JVM 再也不有繼續執行操做所需的內存資源時,將出現 OutOfMemoryError。
檢查異常 和 未檢查異常 的劃分指針
Java中的異常分爲兩大類:
1.Checked Exception(非Runtime Exception)
2.Unchecked Exception(Runtime Exception)
運行時異常
RuntimeException類是Exception類的子類,它叫作運行時異常,Java中的全部運行時異常都會直接或者間接地繼承自RuntimeException類。
Java中凡是繼承自Exception,而不繼承自RuntimeException類的異常都是非運行時異常。
一個try後面能夠跟多個catch,但無論多少個,最多隻會有一個catch塊被執行。
對於非運行時異常(checked exception),必需要對其進行處理,不然沒法經過編譯。
處理方式有兩種:
1.使用try..catch..finally進行捕獲;
2.在產生異常的方法聲明後面寫上throws 某一個Exception類型,如throws Exception,將異常拋出到外面一層去。
對於運行時異常(runtime exception),能夠對其進行處理,也能夠不處理。推薦不對運行時異常進行處理。
擴展:錯誤和異常的區別(Error vs Exception)
1).java.lang.Error: Throwable的子類,用於標記嚴重錯誤。合理的應用程序不該該去try/catch這種錯誤。絕大多數的錯誤都是非正常的,就根本不應出現的。
java.lang.Exception: Throwable的子類,用於指示一種合理的程序想去catch的條件。即它僅僅是一種程序運行條件,而非嚴重錯誤,而且鼓勵用戶程序去catch它。
**2).Error和RuntimeException **及其子類都是未檢查的異常(unchecked exceptions),而全部其餘的Exception類都是檢查了的異常(checked exceptions).
checked exceptions: 一般是從一個能夠恢復的程序中拋出來的,而且最好可以從這種異常中使用程序恢復。好比FileNotFoundException, ParseException等。檢查了的異常發生在編譯階段,必需要使用try…catch(或者throws)不然編譯不經過。
**unchecked exceptions: **一般是若是一切正常的話本不應發生的異常,可是的確發生了。發生在運行期,具備不肯定性,主要是因爲程序的邏輯問題所引發的。好比ArrayIndexOutOfBoundException, ClassCastException等。從語言自己的角度講,程序不應去catch這類異常,雖然可以從諸如RuntimeException這樣的異常中catch並恢復,可是並不鼓勵終端程序員這麼作,由於徹底沒要必要。由於這類錯誤自己就是bug,應該被修復,出現此類錯誤時程序就應該當即中止執行。 所以,面對Errors和unchecked exceptions應該讓程序自動終止執行,程序員不應作諸如try/catch這樣的事情,而是應該查明緣由,修改代碼邏輯。
RuntimeException:RuntimeException體系包括錯誤的類型轉換、數組越界訪問和試圖訪問空指針等等。
處理RuntimeException的原則是:若是出現 RuntimeException,那麼必定是程序員的錯誤。例如,能夠經過檢查數組下標和數組邊界來避免數組越界訪問異常。其餘(IOException等等)checked異常通常是外部錯誤,例如試圖從文件尾後讀取數據等,這並非程序自己的錯誤,而是在應用環境中出現的外部錯誤。
以上這篇Java_異常類(錯誤和異常,二者的區別介紹) 就是小編分享給你們的所有內容了,但願能給你們一個參考,也但願你們多多支持腳本之家。
常見的異常;
ArrayIndexOutOfBoundsException 數組下標越界異常,
ArithmaticException 算數異常 如除數爲零
NullPointerException 空指針異常
IllegalArgumentException 不合法參數異常對象
做者:艾小天兒
連接:https://www.jianshu.com/p/e8bbee3c1c4a
來源:簡書
簡書著做權歸做者全部,任何形式的轉載都請聯繫做者得到受權並註明出處。繼承