本文收錄在豬哥GitHub: https://github.com/pig6/Java 中,本項目收集一線大廠面試、實戰、Java學習路線等。
JVM針對程序運行監測出的異常建立個異常對象,對象包含了異常產生的:內容、緣由、位置。根據程序邏輯將異常對象層層拋出或者處理。java
錯誤Error通常是指java虛擬機相關的問題,如系統崩潰、虛擬機出錯誤、動態連接失敗等,這種錯誤沒法恢復或不可能捕獲,將致使應用程序中斷,一般應用程序沒法處理這些錯誤,所以應用程序不該該捕獲Error對象,也無須在其throws子句中聲明該方法拋出任何Error或其子類。git
VirtualMachineErrorgithub
LinkageError面試
1> 運行時異常 RuntimeException:是指「能夠避免的異常」,如 null引用異常,這類異常都是由程序內部緣由形成的,是能夠避免的,考驗開發的嚴謹性,所以這個問題是咱們做爲一名開發必需要避免發生的,再大的公司每一年總會有幾回事故是由於NPE致使的,咱們若是由於這種問題被通報了就是很尷尬的事情了(對生產環境必定要有足夠的敬畏心啊)。學習
常見的運行時異常有如下幾種:編碼
2> 非運行時異常:表明「沒法避免的異常」 如io異常,每每這類異常是因爲外部緣由形成的,程序自己沒法保證他們不發生,因此這類異常必須捕獲,這就是咱們在使用io資源或者操做線程好比sleep的時候必需要捕獲或者拋出的緣由。spa
常見的有:線程
1>CheckedException:等價於非運行時異常,要麼捕獲,要麼拋出,不然編譯沒法經過。表明「沒法避免的異常」 如io異常 每每這類異常是因爲外部緣由形成的,程序自己沒法保證他們不發生
2>UnCheckedException:包括:Error&運行時異常對象
一般應該捕獲那些知道如何處理的異常,而將那些不知道如何處理的異常進行傳遞。若是想傳遞一個異常,就必須在方法的聲明中添加一個throws說明符,以便告知調用者這個方法可能會拋出異常。blog
使用習慣:
遺留問題: 編碼中是該捕獲Exception仍是Throwable呢?歡迎評論區交流!!