在我们的常规开发中,如果代码被try catch finally包含,发生异常之后,先去执行catch块,去处理一些逻辑,然后再执行finally块,一般用于关闭一些资源。
但是在含有return关键字后,就会出现一些不一样的情况。
1.正常情况
//1.正常情况
public void demo1(){
try {
int i=1/0;
} catch (Exception e) {
System.out.println("处理异常");
e.printStackTrace();
} finally {
System.out.println("finally操作");
}
}
2.catch中有return 语句,finally对return的数据进行了操作(基本数据)
//catch中有return 语句,finally对return的数据进行了操作(基本操作)
public int demo2(){
int num=0;
try {
int i=1/0;
} catch (Exception e) {
return num=num+2; //返回2
} finally {
System.out.println("finally操作");
++num;
}
return -1;
}
3.catch中有return 语句,finally对return的数据进行了操作(引用数据)
// catch中有return 语句,finally对return的数据进行了操作(引用数据)
public User demo3(){
//返回bb
User user=new User();
user.setName("aa");
try {
int i=1/0;
} catch (Exception e) {
return user; //返回2
} finally {
System.out.println("finally操作");
user.setName("bb");
}
return null;
}
4.catch和try块里都有return
// 4.catch和try块里都有return
public int demo4(){
//返回5
int num=0;
try {
int i=1/0;
} catch (Exception e) {
System.out.println("处理异常");
return num=num+2;
} finally {
System.out.println("finally操作");
return num=num+3;
}
}