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

多重捕獲MultiCatch 
馬克- to-win:馬克 java社區(qū):防盜版實名手機尾號: 73203。
馬克-to-win:什么叫多重捕獲MultiCatch?一段代碼可能引起多個異常,這時可以定義兩個或更多的catch子句來處理這種情況,每個子句捕獲一種類型的異常。馬克-to-win:異常被引發(fā)時,每一個catch塊兒被依次檢查,第一個匹配異常類型的catch塊兒被執(zhí)行。馬克-to-win:當一個catch塊兒執(zhí)行以后,其他的catch塊兒被跳過,繼續(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:這里會發(fā)生異常,所以try塊中后面語句執(zhí)行不了, 進入catch 塊兒
            result = arg1 /0;
            System.out.println("try部分沒有完成,所以打印不出這里");
        }
        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é)束


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




例: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:這里會再次拋出異常,使程序崩潰
            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:由于我們少捕獲一個除0異常,程序崩潰, 很可怕。程序進一步修改如下:
例: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é)束