在这里简单介绍一个异常机制当中有趣的代码例子;
首先我们来看下面的这一段代码
public class Test0 {
public static int method01(){
try {
String[] names = new String[3];
if(names[1].equals("tom")){
System.out.println(names[1]);
}else {
names[3] = "hanshunping";
}
return 1;
} catch (ArrayIndexOutOfBoundsException e) {
return 2;
}catch (NullPointerException e){
return 3;
}finally {
return 4;
}
}
public static void main(String[] args) {
System.out.println(method01());//输出为4
}
}
在看下面的一段代码:
public static int method02(){
int i =1;
try {
i++;
String[] names = new String[3];
if(names[1].equals("tom")){
System.out.println(names[1]);
}else {
names[3] = "hanshunping";
}
return 1;
} catch (ArrayIndexOutOfBoundsException e) {
return 2;
} catch (NullPointerException e){
return ++i;
//在这里因为还要执行finally语句,所以用临时变量
//保存i=3 =》temp=3,如果要在这里进行返回操作
//那么返回的就是临时变量的值3
}finally {
++i;
System.out.println("i =" + i);
}
}
public static void main(String[] args) {
System.out.println(method02());//输出为3
}
}
在这里滴一段代码不做过多介绍,主要对第二段代码进行对比,首先我们判断出try语句中应该抛出的是空指针异常,所以第二段代码中i进行自加变成3,因为还有finallu语句需要执行,所以在这里我们内部使用了一个临时变量来进行存储3,再运行finallu语句,i变成4,但是finally中并没有返回语句,所以我们在抛出空指针异常处进行返回值,返回的是临时变量的值。