Java把所有的非正常情況分為兩種:異常(Exception)和錯誤(Error),它們都繼承Throwable父類。
Java的異常(Exception和Error)分為檢查異常和非檢查的異常。
其中根據Exception異常進行分類,可分為運行時異常和非運行時異常。
檢查異常:
就是編譯器要求你必須處理的異常。比如我們在編程某個文件的讀於寫時,編譯器要求你必須要對某段代碼try....catch... 或者 throws exception,這就是檢查異常,簡單的來說,你代碼還沒有運行,編碼器就會檢查你的代碼,對可能出現的異常必須做出相對的處理。(比如當文件不存在時..)
如何處理檢查異常:
1、繼續往上拋出,(這是一個消極的方法),一直可以拋到java虛擬機來處理,通過throw exception拋出。
2、用try...catch捕獲
(提示) 對於檢查時的異常必須處理,或者必須捕獲或者必須拋出
檢查異常大概有哪些?
除了RuntimeException與其派生類(子類),以及錯誤(Error)。其他的差不多都是檢查異常。
非檢查異常:
編譯器不要求強制處置的異常,雖然有可能出現錯誤,但是我不會在編譯的時候檢查。
如何處理非檢查異常:
1、try....catch捕獲
2、繼續拋出
3、不處理
這類異常一般我們是不處理的,因為會很判斷會出現什么問題,而且有些異常你也無法運行時處理,比如空指針。
非檢查異常有哪些:
RuntimeException與其子類,以及錯誤(Error)
Exception異常進行划分,它可分為運行時異常和非運行時異常。
運行時異常:
都是RuntimeException類及其子類異常,如NullPointerException(空指針異常)、IndexOutOfBoundsException(下標越界異常)等,這些異常是非檢查異常,程序中可以選擇捕獲處理,也可以不處理。這些異常一般是由程序邏輯錯誤引起的,程序應該從邏輯角度盡可能避免這類異常的發生。
運行時異常的特點是Java編譯器不會檢查它,也就是說,當程序中可能出現這類異常,即使沒有用try-catch語句捕獲它,也沒有用throws子句聲明拋出它,也會編譯通過
非運行時異常:
是RuntimeException以外的異常,類型上都屬於Exception類及其子類。從程序語法角度講是必須進行處理的異常,如果不處理,程序就不能編譯通過。如IOException、SQLException等以及用戶自定義的Exception異常,一般情況下不要自定義檢查異常。
https://www.cnblogs.com/oukele/p/10035238.html
1、簡介
###############################################################
#########################################
https://www.cnblogs.com/zhuiyiyujinxiang/p/4707517.html
https://processon.com/view/54e04d67e4b0c4be3d43cb2b#map