单选题 下列程序的执行结果是______。
public class Test {
public static void main(String[] args) {
int[] x={0, i,2,3};
for(int i=0;i<3;i+=2) {
try{
System.out.println(x[i+2]/x[i]+x[i+1]);
}catch(ArithmeticException e) {
System.out.println("error1");
}catch(Exception e) {
System.out.println ("error2");
}
}
}
}
  • A.error1
  • B.error2
  • C.error1 error2
  • D.2 error2
【正确答案】 C
【答案解析】[解析] 当for循环第一次执行的时候i=0,输出的计算部分是2/0+1,除数为0会报出异常,是ArithmeticException的子类,所以先输出error1的打印。第一次执行完毕之后,第二次i=i+2=2,执行的计算部分是x[4],会直接抛出数组越界的异常,不属于ArihmeticException的子类,所以会被第二个异常捕捉语句捕捉,打印error2。执行完第二次之后i=i+2=4,已经不小于3,所以不再继续执行。