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

多重捕获MultiCatch 
马克- to-win:马克 java社区:防盗版实名手机尾号: 73203。
马克-to-win:什么叫多重捕获MultiCatch?一段代码可能引起多个异常,这时可以定义两个或更多的catch子句来处理这种情况,每个子句捕获一种类型的异常。马克-to-win:异常被引发时,每一个catch块儿被依次检查,第一个匹配异常类型的catch块儿被执行。马克-to-win:当一个catch块儿执行以后,其他的catch块儿被跳过,继续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:这里会发生异常,所以try块中后面语句执行不了, 进入catch 块儿
            result = arg1 /0;
            System.out.println("try部分没有完成,所以打印不出这里");
        }
        catch (NumberFormatException e) {
            System.out.println("输入参数必须为整数!");
        }
        System.out.println("马克-to-win:优雅结束");
    }
}

输出结果:

输入参数必须为整数!
马克-to-win:优雅结束


观察上一个例子可知:用户根据提示,输入会变成整数,见下一个例子。




例: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("输入参数必须为整数!");
        }
        System.out.println("马克-to-win:优雅结束");
    }
}

输出结果:

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("输入参数必须为整数!");
        } catch (ArithmeticException e) {
            System.out.println("除数不能为0");
        }
        System.out.println("马克-to-win:优雅结束");
    }
}

结果如下:

除数不能为0
马克-to-win:优雅结束