Error與Exception的區別

首先,Error類和Exception類都是繼承Throwable類java

Error(錯誤)是系統中的錯誤,程序員是不能改變的和處理的,是在程序編譯時出現的錯誤,只能經過修改程序才能修正。通常是指與虛擬機相關的問題,如系統崩潰,虛擬機錯誤,內存空間不足,方法調用棧溢等。對於這類錯誤的致使的應用程序中斷,僅靠程序自己沒法恢復和和預防,遇到這樣的錯誤,建議讓程序終止。程序員

Exception(異常)表示程序能夠處理的異常,能夠捕獲且可能恢復。遇到這類異常,應該儘量處理異常,使程序恢復運行,而不該該隨意終止異常。spa

  Exception又分爲兩類指針

    CheckedException:(編譯時異常) 須要用try——catch顯示的捕獲,對於可恢復的異常使用CheckedException。繼承

    UnCheckedException(RuntimeException):(運行時異常)不須要捕獲,對於程序錯誤(不可恢復)的異常使用RuntimeException。索引

常見的RuntimeException異常內存

  illegalArgumentException:此異常代表向方法傳遞了一個不合法或不正確的參數。get

  illegalStateException:在不合理或不正確時間內喚醒一方法時出現的異常信息。換句話說,即 Java 環境或 Java 應用不知足請求操做。虛擬機

  NullpointerException:空指針異常(我目前碰見的最多的)io

  IndexOutOfBoundsException:索引超出邊界異常

常見的CheckedException異常

  咱們在編寫程序過程當中try——catch捕獲到的一場都是CheckedException。

  io包中的IOExecption及其子類,都是CheckedException。

 

舉個簡單的例子(看別人的,以爲很形象,很好理解)

  Error和Exception就像是水池和水池裏的水的區別

  「水池」,就是代碼正常運行的外部環境,若是水池崩潰(系統崩潰),或者池水溢出(內存溢出)等,這些都是跟水池外部環境有關。這些就是java中的error

  「水池裏的水」,就是正常運行的代碼,水污染了、有雜質了,渾濁了,這些影響水質的因素就是Exception。

相關文章
相關標籤/搜索