一、基礎篇--1.1Java基礎-Exception、Error、RuntimeException與一般異常有何異同
Throwable、Error、Exception、RuntimeException 關係如下類圖所示:
Throwable:
Throwable類是java語言中所有錯誤或者異常的超類。它的兩個子類是Error和Exception。
Error:
Error是Throwable的子類,用於指示合理的應用程式不應該試圖捕獲的嚴重問題。
一般都是不可控制的(unchecked),用來表示虛擬機器內部錯誤或者底層資源的錯誤。
Exception:
可以是被控制的(checked)或者不可控制的(unchecked),一般是有認為導致的錯誤,應該在程式級別處理掉。
Exception類和所有子類(不包括RuntimeException類及其子類)都是檢查異常(checked exceptions),它們需要在方法或構造方法的throws子句中宣告,可以傳遞到外部。
RuntimeException:
RuntimeException是那些可能在 Java 虛擬機器正常執行期間丟擲的異常的超類。可能在執行方法期間丟擲但未被捕獲的RuntimeException的任何子類都無需在 throws子句中進行宣告。RuntimeException是Exception的子類,是不可控制的(unchecked)。
常見的幾種RuntimeException:
NullPointerException(空指標異常)
IndexOutOfBoundsException(下標越界異常)
IllegalArgumentException - 傳遞非法引數異常。
ClassCastException - 型別強制轉換異常。
NumberFormatException (String轉換為指定的數字型別異常)
ArithmeticException -(算術運算異常 如除數為0)
ArrayStoreException - (向陣列中存放與宣告型別不相容物件異常)
SecurityException -(安全異常)
UnsupportedOperationException - 不支援的操作異常