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:优雅结束