1. 程式人生 > 其它 >Throwable、Error、Exception、RuntimeException 區別

Throwable、Error、Exception、RuntimeException 區別

Throwable 類是Java語言中所有錯誤或異常的超類。它的兩個子類是Error和Exception(錯誤和異常)

圖來自這裡

Error:
error類包括一些嚴重的程式不能處理的系統錯誤類(系統錯誤或者資源錯誤),是不可控制的,如記憶體溢位、虛擬機器錯誤、棧溢位等。這類錯誤一般與硬體有關,與程式本身無關,通常由系統進行處理,程式本身無法捕獲和處理。

常見的error:
NoClassDefineError:類未定義錯誤
OutOfMemoryError:記憶體溢位錯誤
StackOverFlowError:棧溢位錯誤

Exception:異常分為執行時異常和檢查型異常。

執行時異常(RuntimeException) :程式設計師不需要在編譯時捕獲,執行期

才會發生的異常
常見RuntimeException
NullPointerException:空指標引用異常
IndexOutOfBoundsException:下標越界異常
IllegalArgumentException:傳遞非法引數異常

檢查型異常(CheckedException):必須在編譯時進行手動try catch,否則編譯不過去
常見CheckedException
ClassNotFoundException :類未找到異常
FileNotFountException:檔案未找到異常
IOException:IO流異常。一般在讀寫資料的時候會出現這種問題
SQLException:操作資料庫異常


TimeoutException:超時異常

ClassNotFountException和NoClassDefineError的區別
NoClassDefFoundError是一個錯誤(Error),而ClassNotFoundException是一個異常(Exception)。
NoClassDefFoundError:當目前執行的類已經編譯,但是找不到它的定義。也就是說你如果編譯了一個類B,在類A中呼叫,編譯完成以後,你又刪除掉B,執行A的時候那麼就會出現這個錯誤
載入時從外儲存器找不到需要的class就出現ClassNotFoundException,連線時從記憶體找不到需要的class就出現NoClassDefFoundError。

參考:https://www.cnblogs.com/zabulon/p/5893053.html