下列程序的执行,说法错误的是 ( )
public class MultiCatch {
public static void main(String args[]) {
try {
int a = args.length;
int b = 42/a; //10行
int c[] = {1};
c[42] = 99;
System.out.println("b=" + b);
} catch(ArithmeticException e) {
System.out.println("除0异常:" + e); // 15行
} catch(ArrayIndexOutOfBoundsException e) {
System.out.println("数组超越边界异常:" + e); // 19行
}
}
}程序将输出第15行的异常信息
程序第10行出错
程序将输出“b=42”
程序将输出第15或者19行的异常信息
“程序将输出第15行的异常信息”:int a = args.length 这一句是获取args数组的长度,这与程序运行方式有关,不一定是0, 所以不一定会抛出异常。
“程序第10行出错”:也是一样的道理。
“程序将输出第15或者19行的异常信息”:很显然数组越界是百分之百会报错的,但是不一定会有除0异常。
程序将输出”b=42”?很显然如果args数组真为0,那么会跳过System.out.println(“b=”+b);直接进入catch语句抛出异常,所以不一定会输出42。
“程序第10行出错”:也是一样的道理。
“程序将输出第15或者19行的异常信息”:很显然数组越界是百分之百会报错的,但是不一定会有除0异常。
程序将输出”b=42”?很显然如果args数组真为0,那么会跳过System.out.println(“b=”+b);直接进入catch语句抛出异常,所以不一定会输出42。