教育行業(yè)A股IPO第一股(股票代碼 003032)

全國(guó)咨詢/投訴熱線:400-618-4000

Java中怎樣定義和拋出指定異常信息?

更新時(shí)間:2021年11月11日18時(shí)48分 來(lái)源:傳智教育 瀏覽次數(shù):

Java中定義了大量的異常類,雖然這些異常類可以描述編程時(shí)出現(xiàn)的大部分異常情況,但是在程序開(kāi)發(fā)中有時(shí)可能需要描述程序中特有的異常情況,例如在設(shè)計(jì)divide()方法時(shí)不允許被除數(shù)為負(fù)數(shù)。為了解決這樣的問(wèn)題,Java允許用戶自定義異常,但自定義的異常類必須繼承自Exception或其子類。接下來(lái)通過(guò)一個(gè)案例來(lái)學(xué)習(xí)自定義異常的創(chuàng)建,如例4-35所示。

例4-35 DivideByMinusException.java

//下面的代碼是自定義一個(gè)異常類繼承自 Except ion
public DivideByMinusException extends Exception
public DivideByMinusException (){
super ()               //調(diào)用Exception無(wú)參的構(gòu)造方法
}
public DivideByMinusException (String message){
//調(diào)用 Exceptlon有參的構(gòu)造方法
}
}

在實(shí)際開(kāi)發(fā)中,如果沒(méi)有特殊的要求,自定義的異常類只需繼承Exception類,在構(gòu)造方法中使用super()語(yǔ)句調(diào)用Exception的構(gòu)造方法即可。

既然自定義了異常,那么該如何使用呢?這時(shí)就需要用到throw關(guān)鍵字,在程序指定位置通過(guò)throw關(guān)鍵字拋出自定義的異常對(duì)象,然后對(duì)拋出的異常進(jìn)行異常處理。

接下來(lái)重新對(duì)例4-33中的divide()方法進(jìn)行改寫,在divide()方法中判斷被除數(shù)是否為負(fù)數(shù),如果為負(fù)數(shù),就是用throw關(guān)鍵字向調(diào)用者拋出自定義的DivideByMinusException異常對(duì)象,如例4-36所示。

例4-36 Example36.java

public class Exanple36 (
//下面的方法實(shí)現(xiàn)了兩個(gè)整數(shù)相除
public static int divide(int x,int y) throws DivideByMinuaException{
if (y ==0){
//使用throw關(guān)鍵字聲明異常對(duì)象
throw new DivideByMinuaException("除數(shù)是0")
}
int result. =x / yL;    //定義一個(gè)變量resulc記錄兩個(gè)散相除的結(jié)果
return result;                      //將結(jié)果返回
publlc static void main(String[] args) {
try {
int result =divide (4, 0);
System.out.println(result);
} catch (DivideByMinuaException e) {
Syatem.out.println(“捕獲的異常信息為:" +e.getMesaage()):
}
}
}

運(yùn)行結(jié)果如下圖所示:

自定義異常

圖4-40    例4-36運(yùn)行結(jié)果

例4-36中,divide()方法通過(guò)邏輯判斷對(duì)除法運(yùn)算的除數(shù)是否為0進(jìn)行了判斷,如果除數(shù)為0就使用throw關(guān)鍵字拋出自定義的DivideByMinusException異常對(duì)象,然后通過(guò)throws關(guān)鍵字拋出異常,并在最后通過(guò)try…catch語(yǔ)句捕獲異常。從圖4-40可以看出,程序執(zhí)行后判斷出除數(shù)為0,拋出了指定的異常信息。





猜你喜歡:

Java培訓(xùn)之Struts最常見(jiàn)的異常錯(cuò)誤

java.lang.NullPointerException_java空指針異常解決方法

JAVA培訓(xùn)之自定義標(biāo)簽實(shí)例

Java培訓(xùn)實(shí)戰(zhàn)教程之自定義spring

傳智教育java開(kāi)發(fā)培訓(xùn)

0 分享到:
和我們?cè)诰€交談!