久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

使用throw和throws引發(fā)異常

 七翼C 2010-04-13

前面討論了如何捕獲Java運行時由系統(tǒng)引發(fā)的異常,,如果想在程序中明確地引發(fā)異常,,則需要用到throw或throws語句,。

1. throw語句

throw語句用來明確地拋出一個“異常”,。這里請注意,,用戶必須得到一個Throwable類或其他子類產(chǎn)生的實例句柄,,通過參數(shù)傳到catch子句,,或者用new語句來創(chuàng)建一個實例。throw語句的通常形式如下,。

throw ThrowableInstance

【示例2】ThrowDemo.java

創(chuàng)建ThrowDemo.java演示throw的相關(guān)用法,。

ThrowDemo.java的代碼清單如下所示。

public class ThrowDemo {

    /**

     * @param args

     */

    public static void main(String[] args) {

        int number=0;

        try{

             number=Integer.parseInt(args[0]);

        }catch(Exception e){           

            throw new ArrayIndexOutOfBoundsException("數(shù)組越界");

            //System.out.println("非法的數(shù)字");

        }

        System.out.println("你輸入的數(shù)字為:"+number);

    }

}

若不提供參數(shù),,會引發(fā)數(shù)組越界的異常(ArrayIndexOutOfBoundsException即為數(shù)組越界異常類,,如果想了解異常的詳細情況,請參見10.5小節(jié)內(nèi)容),。運行ThrowDemo類,,控制臺的輸出結(jié)果如圖10.10所示。

執(zhí)行throw語句后,,運行流程將立即停止,,throw的下一條語句也將暫停執(zhí)行。throw后必須拋出一個Throwable類的實例,。

圖10.10  當(dāng)參數(shù)為空時的輸出結(jié)果

從圖10.10可以看出,,throw語句一經(jīng)執(zhí)行,后面的語句都不會被執(zhí)行,。

2. throws語句

如果一個方法a可以引發(fā)異常,,而它本身并不對該異常進行處理,那么a方法必須將這個異常拋給調(diào)用以使程序能夠繼續(xù)執(zhí)行下去,。這時候就要用到throws語句,。throws語句的常用格式如下所示。

    returnType  methodName() throws ExceptionType1,ExceptionType2,…{

        … //method body

}

在method body中可以是引發(fā)異常列表中的任何一種異常及其子類型的異常,。thorws用來聲明一個方法可能會拋出的所有異常,,它跟在方法簽名的后面。如果有多個異常則使用逗號將其分開,。如果一個方法聲明的是受檢異常,,則在調(diào)用這個方法之處必須處理這個異常(一般情況下由調(diào)用此方法的類處理)。

【示例3】ThrowsDemo.java

創(chuàng)建ThrowsDemo.java演示throws的相關(guān)用法,。

public class ThrowsDemo {

    /**

     * @param args

     */

    public static void main(String[] args) {

        testThrows(args);

    }

    public static void testThrows(String[] tmp) {

        try {

            createThrow(tmp);

        } catch (Exception e) {

            System.out.println("來自createThrow方法的異常");

        }

    }

    // 拋出可能存在的異常

    public static void createThrow(String[] tmp) throws Exception {

        int number = 0;

        number = Integer.parseInt(tmp[0]);

        System.out.println("你輸入的數(shù)字為:" + number);

    }

}

如果方法簽名后有throws關(guān)鍵詞,,則在此方法被調(diào)用時,需要在調(diào)用方法中用try和catch進行捕獲異常,,如果不捕獲異常,,則需要在調(diào)用方法中使用throws關(guān)鍵詞將異常拋出。代碼中的testThrows()方法也可以改為如下所示,。

public static void testThrows(String[] tmp) throws Exception {

        createThrow(tmp);

    }

被調(diào)用的方法和調(diào)用方法處理異常的關(guān)系示意圖如圖10.11所示,。

圖10.11  被調(diào)用的方法和調(diào)用方法處理異常的關(guān)系示意圖

當(dāng)覆蓋拋出異常的方法時,覆蓋方法僅需要聲明異常的同類或子類,,例如,,如果父類方法拋出IOException,,則覆蓋方法可以拋出IOException、 FileNotFoundException(IOException的子類),,但不可以拋出Exception(IOException的父類),??梢栽趖hrows子句中聲明更少或更多指定的異常,。

3. throw和throws語句的組合應(yīng)用

在實際的應(yīng)用中,一般都需要throw和throws語句組合應(yīng)用,,就是在捕獲異常后,,拋出一個明確的異常給調(diào)用者。

【示例4】ThrowAndThrowsDerno.java

創(chuàng)建ThrowAndThrowsDerno.java演示throw和throws語句的組合應(yīng)用,。

public class ThrowAndThrowsDemo {

    /**

     * @param args

     */

    public static void main(String[] args) {

        testThrow(args);

    }

    // 調(diào)用有異常的方法

    public static void testThrow(String[] tmp) {

        try {

            createThrow(tmp);

        } catch (Exception e) {

            System.out.println("捕捉來自createThrow方法的異常");

        }

    }

    // 拋出一個具體的異常

    public static void createThrow(String[] tmp) throws Exception{

        int number = 0;

        try {

            number = Integer.parseInt(tmp[0]);

        } catch (Exception e) {

            throw new ArrayIndexOutOfBoundsException("數(shù)組越界");

            // System.out.println("非法的數(shù)字");

        }

        System.out.println("你輸入的數(shù)字為:" + number);

    }

}

throw語句是編寫在方法之中的,,而throws語句是用在方法簽名之后的。在同一個方法中使用throw和throws時要注意,,throws拋出的類型的范圍要比throw拋出的對象范圍大才可以,。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多