Java 的Throwable、error、exception的區別


1.   什么是異常?

   異常本質上是程序上的錯誤,包括程序邏輯錯誤和系統錯誤。比如使用空的引用(NullPointerException)、數組下標越界(IndexOutOfBoundsException)、內存溢出錯誤等。Throwable 類是 Java 語言中所有錯誤或異常的超類。有兩個重要的子類:Exception(異常)和 Error(錯誤),二者都是 Java 異常處理的重要子類,各自都包含大量子類。

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極其子類,捕捉的范圍更小。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM