首先error和Exception都是集成Throwable類
- Error(錯誤)是系統中的錯誤岸晦,程序員是不能改變的和處理的,是在程序編譯時出現的錯誤侥祭,只能通過修改程序才能修正晰房。一般指與虛擬機相關的問題,如系統崩潰勇垛,虛擬機錯誤,內存空間不足,方法調用棧溢出等祖能。對于這類錯誤導致的應用程序中斷,僅靠程序本身無法恢復和預防蛾洛,遇到這樣的錯誤养铸,建議讓程序終止。
- Exception(異常)表示程序可以處理的異常轧膘,可以捕獲且可能恢復钞螟。遇到這類異常,應該盡可能處理異常谎碍,使程序恢復運行鳞滨,而不應該隨意終止異常。
Excepion分為兩類
- CheckedException:(編譯時異常)需要try-catch顯示的捕獲蟆淀,對于可恢復的異痴玻可以使用CheckedException澡匪。
- UnChecked(RuntimeException):(運行時異常)不需要捕獲,對程序錯誤(不可恢復)的異常使用RuntimeException提岔。
常見的RuntimeException異常:
illegalArgumentException:此異常表示向方法床底一個不合法或不正確的參數仙蛉。
illegalStateException:在不合理或不正確時間內喚醒一方法出現的異常信息。換句話說碱蒙,即java環(huán)境或java應用不滿足操作請求荠瘪。
NullpointerException:空指針異常
IndexOutOfBoundsException:索引超出邊界異常。
常見的CheckedExcption
我們在編寫程序過程中try-chtch捕獲到的異常都是CheckedException赛惩。
io包中的IOException及其子類哀墓,都是CheckedException。
舉個簡單例子
Error和Exception就像是睡會和水池里的水的區(qū)別
- “水池”喷兼,就是代碼正常運行的外部環(huán)境篮绰,如果水池崩潰(系統崩潰),或者池水溢出(內存溢出)等季惯,這些都是跟水池外部環(huán)境有關吠各,這些都是java中的error。
- “水池里的水”勉抓,就是正常運行的代碼贾漏,水污染了、有雜質了藕筋、渾濁了纵散,這些影響水質的因素就是Exception。