java异常处理机制_Java的异常处理机制
生活随笔
收集整理的這篇文章主要介紹了
java异常处理机制_Java的异常处理机制
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Throwable 類是 Java 語言中所有錯誤或異常的超類。只有當對象是此類(或其子類之一)的實例時,才能通過 Java 虛擬機或者 Java 的 throw 語句拋出。類似地,只有此類或其子類之一才可以是 catch 子句中的參數類型。
Error
Error 是 Throwable 的子類,用于指示應用程序不應該試圖捕獲的嚴重問題。Error 也叫系統級異常,它是為無法預計的,程序無法處理的異常錯誤,表示運行應用程序過程中出現了較嚴重問題。一般情況都是在JVM上出現了問題。
在執行該方法期間,無需在其 throws 子句中聲明可能拋出但是未能捕獲的 Error 的任何子類,因為這些錯誤是不確定的不會重復出現的。
Error有如下常見且重要的子類:
- AnnotationFormatError 當注釋解析器試圖從類文件讀取注釋并確定注釋出現異常時,拋出該錯誤。
- IOError 當發生嚴重的 I/O 錯誤時,拋出此錯誤。
- ThreadDeath 調用 Thread 類中帶有零參數的 stop 方法時,受害線程將拋出一個 ThreadDeath 實例。 僅當應用程序在被異步終止后必須清除時才應該捕獲這個類的實例。如果 ThreadDeath 被一個方法捕獲,那么將它重新拋出非常重要,因為這樣才能讓該線程真正終止。 如果沒有捕獲 ThreadDeath,則頂級錯誤處理程序不會輸出消息。雖然 ThreadDeath 類是“正常出現”的,但它只能是 Error 的子類而不是 Exception 的子類,因為許多應用程序捕獲所有出現的 Exception,然后又將其放棄。
- LinkageError LinkageError 的子類指示一個類在一定程度上依賴于另一個類;但是,在編譯前一個類之后,后一個類發生了不相容的改變。它一共有7個直接子類。
- VirtualMachineError 當 Java 虛擬機崩潰或用盡了它繼續操作所需的資源時,拋出該錯誤。子類有:InternalError (該異常指示 Java 虛擬機中出現一些意外的內部錯誤),OutOfMemoryError (因為內存溢出或沒有可用的內存提供給垃圾回收器時,Java 虛擬機無法分配一個對象,這時拋出該異常),StackOverflowError (當應用程序遞歸太深而發生堆棧溢出時,拋出該錯誤),UnknownError (當 Java 虛擬機中出現一個未知但嚴重的異常時,拋出該錯誤)。
Exception
同樣作為Throwable的子類,既然Error是系統級異常,與之對應的Exception就是應用級異常。這種異常通常都是可能預料到的,由應用拋出該類異常,執行方法時再捕獲該類異常。
Exception的直接子類有很多,大概有數十個,我們將它的所有子類分為兩類:
- 運行時異常1,運行時異常(RuntimeException)是那些可能在 Java 虛擬機正常運行期間拋出的異常的超類。程序編譯時是不知道到底會不會觸發該異常的,只有程序運行起來才知道。它的子類也有很多,例如有空指針異常(NullPointerException), 對象強制轉換異常(ClassCastException)等等。 2,因為運行時異常的不確定性,所以對于程序中拋出的RuntimeException及其子類在程序執行方法期間是不需要我們強制捕獲處理它的。 3,RuntimeException跟Error性質上差不多,都是在程序運行期間可能會產生的異常。但是Error是系統級的異常大都是JVM相關的異常,而RuntimeException則是應用程序級別的異常。
- 其他應用異常1,其他應用異常就是Exception的所有子類里除了RuntimeException外的異常,這些異常都是在執行之前可預見的異常。例如IOException、SQLException等以及用戶自定義的Exception異常。 2,這些異常與RuntimeException不同的是編譯器強制要求必須捕獲處理他們,即如果程序某處拋出了異常,那么在執行方法前一定要先捕獲異常。
捕獲異常
try{ // 可能會拋出異常的代碼}catch(Exception e){ // 捕獲異常的位置}finally{ // 無論有沒有拋出異常都會執行的代碼}復制代碼需要java學習路線圖的私信筆者“java”領取哦!另外喜歡這篇文章的可以給筆者點個贊,關注一下,每天都會分享Java相關文章!還有不定時的福利贈送,包括整理的學習資料,面試題,源碼等~~
總結
以上是生活随笔為你收集整理的java异常处理机制_Java的异常处理机制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android APK反编译详解(附图)
- 下一篇: angular-js资料收集