笔记:首先分析a选项,它说第15行将会输出异常信息,那我们先看下整个程序,int a =args.length 这一句是获取args数组的长度,这个地方也许很多人都不清楚,都认为这里就是空的,也就是长度为0,那么肯定会抛出异常的,但是其实这个main中的这个数组是可以赋值的(这里大家可以百度一下),这个赋值是很特殊的,所以a不对,不一定会抛出异常。
同样b也是一样的道理。
我们看c、程序将输出”b=42”。很显然如果args数组真为0,那么他会跳过system.out.println(“b=”+b);直接进入catch语句抛出异常,所以不一定会输出42。
看d、程序将输出第15或者19行的异常信息,很显然数组越界是百分之百会报错的,但是不一定会有除0异常,所以d对。 2. 此方法返回值是多少(b )
public static int divide(){
int i = 3;
try {
int a = 10/0;
return i;
} catch (exception e) {
i = 4;
return i;
}finally{
i = 5;
}
}
a.3
b.4
c.5
d.报异常错误
分析:这个题确实有点坑,但是return掌握完全 就没问题了,相信大部分人选c,但实际答案确实b。我们先一步一步分析,首先try中的肯定会抛出异常,于是到了int a =10\0 的时候就直接跳到了catch语句中,此时i被赋值为4,并且此时return 返回 i值,我们都知道finally的语句中是最后一定会执行的,但是我们在catch中把 i 给返回了,其他的任何赋值都没用!!!
所以选b。 3。对于catch子句的排列,下列哪种是正确的( b )