1. 程式人生 > >Java 異常:丟擲異常

Java 異常:丟擲異常

throw關鍵字

1.throw用於丟擲具體異常類的物件,一般用於方法體中。

2.什麼時候使用:當所寫的程式碼因不滿足某些條件致使程式無法執行時可以藉助throw丟擲一個異常物件提醒程序員。

 

3.當b0時不滿足下面輸出語的執行條件,所以使用throw關鍵字丟擲執行時異常,用於提醒方法呼叫者

4.throw關鍵字一般用在方法體中,也可以用在程式碼塊中,但如果程式碼塊中丟擲的異常物件是由檢查時異常建立的,則必須使用try-catch進行處理;

 

5.如果替換成new RuntimeException(“操作失敗:分母不能為0”),則可以省去try-catch語句塊。

throw將異常物件拋給誰

拋給自己

 

 

拋給方法呼叫者

 

注:僅僅使用throw關鍵字將異常物件丟擲,此處沒做任何處理;如果丟擲的異常類物件是由檢查時異常類建立的,則還需要使用throws丟擲丟擲建立該異常物件的異常類或其父類,參見備註示例程式碼

處理方式一

注:方法呼叫者使用try-catch處理該異常(推薦)

處理方式二

注:方法呼叫者繼續上拋該異常,由於方法丟擲的是執行時異常類建立的物件,所以可以如下這樣做;如果丟擲由檢查時異常類建立的物件,則這種處理方式必須使用throws關鍵字丟擲建立該物件的異常類或其父類

6.使用throw丟擲異常物件如果沒有try-catch捕獲該異常物件,則該丟擲異常物件語句執行後其所在方法結束執行。

注:由於age1000if條件語句執行,又因為沒有對丟擲的異常使用try-catch捕獲,所以此行程式碼不執行

注:因為呼叫div方法時會該方法丟擲了異常物件,而呼叫方法的程式碼沒有try-catch進行捕獲處理,所以所以此行程式碼不執行 

7.throws用於宣告方法可能丟擲的異常,其後為異常類,可以有多個,異常類之間用英文逗號間隔。

8.什麼時候使用:

當方法體中的throw關鍵字丟擲由檢查時異常建立的物件時,如果該異常物件在丟擲的同時已經通過

try-catch進行了處理,則可以不使用throws,否則必須使用throws丟擲建立該物件的異常類或其父類。

所呼叫的方法丟擲了檢查時異常時,如果該方法在呼叫的同時已經通過try-catch進行了處理,則可以不使用throws繼續上拋該異常,否則必須使用throws才能上拋該異常,此時上拋的異常類可以是呼叫方法時方法丟擲的異常類也可以是其父類。

 9.如果方法中的異常已經通過try-catch進行了捕獲則無需再使用throws上拋該異常了,否則即使上拋也無效,只會做無用功。

注:此處異常已經通過try-catch語句進行了處理,所以show方法無需再使用throws丟擲異常了,否則即使上拋也無效:執行程式碼會發現,即使這裡異常被觸發了,在main方法中catch依然沒有執行,所以此時在通過throws丟擲異常類純屬無用功。

10.如果方法中的程式碼或者方法中所呼叫的程式碼沒有使用throw丟擲異常類物件,則無需使用throws否則該throws所丟擲的異常類無效:即使用throws則其方法中的程式碼一定存在使用throw丟擲異常物件的程式碼。

注:由於該方法中只是一個簡單的輸出語句,方法體和方法體中所呼叫的方法均沒有使用throw丟擲異常物件,所以此處沒有必要使用throws丟擲異常類,即便丟擲了也是無用的——由於這裡使用了throws丟擲了異常類,main方法對該異常類進行了處理,可是我們會發現main方法中的catch語句塊永遠不可能執行

11.throwthrows的區別:

丟擲的東西不同:throw丟擲的是具體的異常物件,而throws丟擲的是抽象的異常類;

使用位置不同:throw一般用在方法體中,也可用在程式碼塊中,但是如果丟擲的是檢查時異常類建立的物件,則必須使用try-catch自行處理;throws只能用在方法宣告括號後面;