異常的層次結構
Throwable有兩個子類,error和exception。
Error(錯誤)
是程序無法處理的錯誤,表示運行應用程序中較嚴重的問題。大多數錯誤與代碼編寫者的操作無關,而是代碼運行時JVM(Java虛擬機)出現的問題。
Exception(異常)
是程序本身可以處理的異常。
運行時異常與非運行時異常的區別
運行時異常runtimeException,這些異常時不檢查異常,程序中可以選擇捕獲這些異常處理,也可以選擇不捕獲處理,這些異常一般是由程序邏輯錯誤引起的,程序應該從邏輯角度儘量避免此類異常的發生。出現運行時異常後,如果沒有捕獲處理此異常,系統會把異常一層層往上拋,一直到最上層,如果是多線程,就由Thread.run()方法拋出;如果是單線程就由main()方法拋出。拋出之後如果輸線程,則線程也就退出了,
非運行時異常
運行時異常以外的所有異常,如IOException和SQLException,以及用戶自己定義的一些異常,這種異常編譯器強制要求我們對其進行處理,要麼捕獲,要麼拋出,否則程序就不能編譯通過。
常見的runtimeException
NullPointerException–空指針異常
ClassCastException–類型轉換異常
ArrayIndexOutOfBoundsException–數組下標越界
ClassNotFoundException–找不到指定的類
NumberFormatException–數字格式異常
SQLException–SQL語句執行異常
IOException–文件未找到,未打開或者io操作不能進行的異常
Exception–
Exception–