Java「異常」簡介及其架構

一 Java異常簡介

Java異常是Java提供的一種識別及響應錯誤的一致性機制。Java異常機制可以使程式中異常處理程式碼和正常業務程式碼分離,保證程式程式碼更加優雅,並提高程式健壯性。在有效使用異常的情況下,異常能清晰的回答what, where, why這3個問題:異常型別回答了“什麼”被丟擲,異常堆疊跟蹤回答了“在哪“丟擲,異常資訊回答了“為什麼“會丟擲。

Java異常機制用到的幾個關鍵字:

try、catch、finally、throw、throws。

try

—— 用於監聽。將要被監聽的程式碼(可能丟擲異常的程式碼)放在try語句塊之內,當try語句塊內發生異常時,異常就被丟擲。

catch

—— 用於捕獲異常。catch用來捕獲try語句塊中發生的異常。

finally

—— finally語句塊總是會被執行。它主要用於回收在try塊裡開啟的物力資源(如資料庫連線、網路連線和磁碟檔案)。只有finally塊,執行完成之後,才會回來執行try或者catch塊中的return或者throw語句,如果finally中使用了return或者throw等終止方法的語句,則就不會跳回執行,直接停止。

throw

—— 用於丟擲異常。

throws

—— 用在方法簽名中,用於宣告該方法可能丟擲的異常。

二 Java異常框架

Java異常架構圖

Java「異常」簡介及其架構

1. Throwable

Throwable是 Java 語言中所有錯誤或異常的超類。

Throwable包含兩個子類:

Error

Exception

。它們通常用於指示發生了異常情況。

Throwable包含了其執行緒建立時執行緒執行堆疊的快照,它提供了printStackTrace()等介面用於獲取堆疊跟蹤資料等資訊。

2. Exception

Exception及其子類是 Throwable 的一種形式,它指出了合理的應用程式想要捕獲的條件。

3. RuntimeException

RuntimeException是那些可能在 Java 虛擬機器正常執行期間丟擲的異常的超類。

編譯器不會檢查RuntimeException異常。例如,除數為零時,丟擲ArithmeticException異常。RuntimeException是ArithmeticException的超類。當代碼發生除數為零的情況時,倘若既“沒有透過throws宣告丟擲ArithmeticException異常”,也“沒有透過try。。。catch。。。處理該異常”,也能透過編譯。這就是我們所說的“編譯器不會檢查RuntimeException異常”!

如果程式碼會產生RuntimeException異常,則需要透過修改程式碼進行避免。例如,若會發生除數為零的情況,則需要透過程式碼避免該情況的發生!

4. Error

和Exception一樣,Error也是Throwable的子類。它用於指示合理的應用程式不應該試圖捕獲的嚴重問題,大多數這樣的錯誤都是異常條件。

和RuntimeException一樣,編譯器也不會檢查Error。

Java將可丟擲(Throwable)的結構分為三種類型:

被檢查的異常(Checked Exception),執行時異常(RuntimeException)和錯誤(Error)。

Java「異常」簡介及其架構

Java「異常」簡介及其架構

Java「異常」簡介及其架構

更多Java精講 交流學習 評論回覆【Java】獲取