try {
int x = 0;
float y = 0;
float z = x / y;
System.out.println("11");
try {
int a[] = new int[3];
a[3] = x;
System.out.println("22");
return;
} catch (Exception e) {
System.out.println("33");
return;
} finally {
System.out.println("44");
System.exit(0);
return;
}
} catch (ArithmeticException e) {
System.out.println("55");
return;
} finally {
System.out.println("66");
return;
int x = 0;
float y = 0;
float z = x / y;
System.out.println("11");
try {
int a[] = new int[3];
a[3] = x;
System.out.println("22");
return;
} catch (Exception e) {
System.out.println("33");
return;
} finally {
System.out.println("44");
System.exit(0);
return;
}
} catch (ArithmeticException e) {
System.out.println("55");
return;
} finally {
System.out.println("66");
return;
}
A: B: C: D:
11 55 11 11
55 66 33 33
66 44 44
66
第一个try浮点运算,是不会出现异常的 ,整形数(integral types)除以0才会抛出异常
假如1.4/0。java自动把0转换成0.0。
0.0是double浮点数,并不精确,不是确切的0。
所以结果并不属于arithmetic异常
答案选C,int a[] = new int[3]; a[3] = x;这句话就会抛出异常,因为a[3]根本就不存在,已经数组越界了。所以打印了11后会到异常打印出33,然后finally是必然会执行的,然后打印44,return,然后结束。