Error與Exception的區別
首先,Error類和Exception類都是繼承Throwable類
Error(錯誤)是系統中的錯誤,程序員是不能改變的和處理的,是在程序編譯時出現的錯誤,只能通過修改程序才能修正。一般是指與虛擬機相關的問題,如系統崩潰,虛擬機錯誤,內存空間不足,方法調用棧溢等。對於這類錯誤的導致的應用程序中斷,僅靠程序本身無法恢復和和預防,遇到這樣的錯誤,建議讓程序終止。
Exception(異常)表示程序可以處理的異常,可以捕獲且可能恢復。遇到這類異常,應該盡可能處理異常,使程序恢復運行,而不應該隨意終止異常。
Exception又分為兩類
CheckedException:(編譯時異常) 需要用try——catch顯示的捕獲,對於可恢復的異常使用CheckedException。
UnCheckedException(RuntimeException):(運行時異常)不需要捕獲,對於程序錯誤(不可恢復)的異常使用RuntimeException。
常見的RuntimeException異常
illegalArgumentException:此異常表明向方法傳遞了一個不合法或不正確的參數。
illegalStateException:在不合理或不正確時間內喚醒一方法時出現的異常信息。換句話說,即 Java 環境或 Java 應用不滿足請求操作。
NullpointerException:空指針異常(我目前遇見的最多的)
IndexOutOfBoundsException:索引超出邊界異常
常見的CheckedException異常
我們在編寫程序過程中try——catch捕獲到的一場都是CheckedException。
io包中的IOExecption及其子類,都是CheckedException。
舉個簡單的例子(看別人的,覺得很形象,很好理解)
Error和Exception就像是水池和水池裏的水的區別
“水池”,就是代碼正常運行的外部環境,如果水池崩潰(系統崩潰),或者池水溢出(內存溢出)等,這些都是跟水池外部環境有關。這些就是java中的error
“水池裏的水”,就是正常運行的代碼,水汙染了、有雜質了,渾濁了,這些影響水質的因素就是Exception。
Error與Exception的區別