1. 什麼是異常?數組
異常本質上是程序上的錯誤,包括程序邏輯錯誤和系統錯誤。好比使用空的引用(NullPointerException)、數組下標越界(IndexOutOfBoundsException)、內存溢出錯誤等。Throwable 類是 Java 語言中全部錯誤或異常的超類。有兩個重要的子類:Exception(異常)和 Error(錯誤),兩者都是 Java 異常處理的重要子類,各自都包含大量子類。spa
2. Error線程
是程序沒法處理的錯誤,表示運行應用程序中較嚴重問題。大多數錯誤與代碼編寫者執行的操做無關,而表示代碼運行時 JVM(Java 虛擬機)出現的問題。 例如,Java虛擬機運行錯誤(Virtual MachineError),當 JVM 再也不有繼續執行操做所需的內存資源時,將出現 OutOfMemoryError。這些異常發生時,Java虛擬機(JVM)通常會選擇線程終止。這些錯誤表示故障發生於虛擬機自身、或者發生在虛擬機試圖執行應用時,如Java虛擬機運行錯誤(VirtualMachineError)、類定義錯誤(NoClassDefFoundError)等。繼承
3. 異常和錯誤的本質區別:異常能被程序自己處理,而錯誤沒法處理。Error是能夠catch的,並且也能夠向常規Exception同樣被處理,並且就算不捕捉的話也只是致使當前線程掛掉,其餘線程仍是能夠正常運行,若是有須要的話捕捉Error以後也能夠作些其餘處理。可是Error是一種系統內部的錯誤,這種錯誤不像Exception同樣是多是程序和業務上的錯誤是能夠恢復的。內存
怎麼catch?catch throwable會把Error和其餘繼承Throwable的類捕捉到。而catch Exception只會捕捉Exception極其子類,捕捉的範圍更小。資源