在java中,全部的異常都有一個共同的祖先java.lang包中的Throwable類。Throwable:有兩個重要的子類:Exception(異常)和Error(錯誤),兩者都是java異常處理的重要子類,各自都包含大量子類。java
Error(錯誤):是程序程序沒法處理的錯誤,表示運行應用程序中較嚴重問題。大多數錯誤與代碼編寫者執行的操做無關,而表示代碼運行時JVM出現問題。例如,java虛擬機運行錯誤(Virtual MachineRrror),當JVM不在有繼續執行操做所需的內存資源時,將出現OutOfMemoryError。這些異常發生時,JVM通常會選擇線程終止。spa
這些錯誤表示故障發生在虛擬機自身,或者發生在虛擬機試圖執行應用時,如java虛擬機運行錯誤(Virtual MachineRrror)、類定義錯誤(NoClassDefFoundError)等。這些錯誤是不可查的,由於它們在應用程序的控制和處理能力以外,並且絕大多數是程序運行時不容許出現的狀況。對於設計合理的一個應用程序來講,即便發生了錯誤,本質上也不該該試圖去處理它所引發的異常情況,在java中,錯誤經過Error的子類描述。線程
Exception(異常):是程序自己能夠處理的異常。Exception類有一個重要的子類RuntimeException。RuntimeException異常由java虛擬機拋出。NullPointerException(要訪問的變量沒有引用任何對象時,拋出)、ArithmeticException(算術運算異常,一個整數除以0時,拋出該異常)和 ArrayIndexOutOfBoundsException (下標越界異常)。 設計
注意:異常和錯誤的區別:異常是能被程序自己處理,錯誤是沒法處理的。對象