異常
Thorwable類所有異常和錯誤的超類,有兩個子類Error和Exception,分別表示錯誤和異常其中異常類Exception又分為運行時異常(RuntimeException)和非運行時異常,這兩種異常有很大的區別,也稱之為不檢查異常(Unchecked Exception) 和檢查異常(Checked Exception)。
Error與Exception
Error是程序無法處理的錯誤這些異常發生時, Java虛擬機(JVM)一般會選擇線程終止。
Exception是程序本身可以處理的異常,這種異常分兩大類運行時異常和非運行時異常。 程序中應當盡可能去處理這些異常。運行時異常和非運行時異常
運行時異常也稱是不檢查異常,程序中可以選擇捕獲處理,也可以不處理。這些異常一般是由程序邏輯錯誤引起的,程序應該從邏輯角度盡可能避免這類異常的發生。
非運行時異常也稱檢查異常,從程序語法角度講是必須進行處理的異常,如果不處理,程序就不能編譯通過。
對于非運行時異常(checked exception)必須要對其進行處理,否則無法通過編譯。
處理方式有兩種:
1.使用try..catch..finally進行捕獲;(一個try后面可以跟多個catch,但不管多少個,最多只會有一個catch塊被執行。)
2.在產生異常的方法聲明后面寫上throws某一個Exception類型,如throws Exception,將異常拋出到外面一層去。自定義異常
所謂自定義異常,通常就是定義一個類,去繼承Exception類或者它的子類。因為異常必須直接或者間接地繼承自Exception類。
通常情況下,會直接繼承自Exception類,一般不會繼承某個運行時的異常類。
自定義異常可以用于處理用戶登錄錯誤,用戶輸入錯誤提示等。throws關鍵字和throw關鍵字有什么區別和聯系
throw用來在方法體內拋出異常,而throws則是方法聲明處聲明異常。兩者有著一定的聯系,當一個方法使用throw拋出異常時,要么使用try/catch捕獲異常,要么用throws進行聲明,否者會出現編譯錯誤。今天學習了異常的類型和異常的處理,了解到了一些常見的異常,如java.lang.nullpointerexception(程序遇上了控制針)、java.lang.arrayindexoutofboundsexception(數組下標越界)等異常。