java中什么叫多重捕獲MultiCatch,它的用法是怎樣的

多重捕獲MultiCatch 
馬克- to-win:馬克 java社區(qū):防盜版實(shí)名手機(jī)尾號(hào): 73203。
馬克-to-win:什么叫多重捕獲MultiCatch?一段代碼可能引起多個(gè)異常,這時(shí)可以定義兩個(gè)或更多的catch子句來(lái)處理這種情況,每個(gè)子句捕獲一種類(lèi)型的異常。馬克-to-win:異常被引發(fā)時(shí),每一個(gè)catch塊兒被依次檢查,第一個(gè)匹配異常類(lèi)型的catch塊兒被執(zhí)行。馬克-to-win:當(dāng)一個(gè)catch塊兒執(zhí)行以后,其他的catch塊兒被跳過(guò),繼續(xù)try/catch塊以后的代碼。像switch一樣。



例:1.2.1-本章源碼
public class Test {
    public static void main(String[] args) {
        int arg1;
        int result;
        String s="abc";
    //    String s="12";
        try {
            arg1 = Integer.parseInt(s); //馬克-to-win:這里會(huì)發(fā)生異常,所以try塊中后面語(yǔ)句執(zhí)行不了, 進(jìn)入catch 塊兒
            result = arg1 /0;
            System.out.println("try部分沒(méi)有完成,所以打印不出這里");
        }
        catch (NumberFormatException e) {
            System.out.println("輸入?yún)?shù)必須為整數(shù)!");
        }
        System.out.println("馬克-to-win:優(yōu)雅結(jié)束");
    }
}

輸出結(jié)果:

輸入?yún)?shù)必須為整數(shù)!
馬克-to-win:優(yōu)雅結(jié)束


觀察上一個(gè)例子可知:用戶(hù)根據(jù)提示,輸入會(huì)變成整數(shù),見(jiàn)下一個(gè)例子。




例:1.2.2-本章源碼

public class Test {
    public static void main(String[] args) {
        int arg1;
        int result;
    //    String s="abc";
        String s="12";
        try {
            arg1 = Integer.parseInt(s);
            result = arg1 /0;//馬克-to-win:這里會(huì)再次拋出異常,使程序崩潰
            System.out.println("try中完成finish");
        }
        catch (NumberFormatException e) {
            System.out.println("輸入?yún)?shù)必須為整數(shù)!");
        }
        System.out.println("馬克-to-win:優(yōu)雅結(jié)束");
    }
}

輸出結(jié)果:

Exception in thread "main" java.lang.ArithmeticException: / by zero
    at Test.main(Test.java:9)




觀察例1.2.2可知:馬克-to-win:由于我們少捕獲一個(gè)除0異常,程序崩潰, 很可怕。程序進(jìn)一步修改如下:
例:1.2.3-本章源碼

public class Test {
    public static void main(String[] args) {
        int arg1;
        int result;
    //    String s="abc";
        String s="12";
        try {
            arg1 = Integer.parseInt(s);
            result = arg1 /0;
            System.out.println("try中完成finish");
        }
        catch (NumberFormatException e) {
            System.out.println("輸入?yún)?shù)必須為整數(shù)!");
        } catch (ArithmeticException e) {
            System.out.println("除數(shù)不能為0");
        }
        System.out.println("馬克-to-win:優(yōu)雅結(jié)束");
    }
}

結(jié)果如下:

除數(shù)不能為0
馬克-to-win:優(yōu)雅結(jié)束