今天我们就trycatch异常捕获块中出现return的各种情况做一个讲解:
一、try和finally中同时出现return
public static void main(String[] args) {
int k = f_test();
System.out.println(k);
}
public static int f_test(){
int a = 0;
try{
a = 1;
return a;
}
finally{
System.out.println("It is in final chunk.");
a = 2;
return a;
}
}
输出 It is in final chunk.
2
二、try中有return语句,finally块中没有
public static void main(String[] args) { int k = f_test(); System.out.println(k); }
public static int f_test(){
int a = 0;
try{
a = 1;
return a;
}
finally{
System.out.println("It is in final chunk.");
a = 2;
}
}
输出 It is in final chunk
1
对这种情况的解释:
1.在trycatch中有return时,执行顺序为 trycatch块中return之前的语句->finally中的语句->try、catch中return语句
2.try和finally中同时出现return,finally中的return语句会覆盖掉try块中的return语句
3.try中有return语句,finally块中没有,即使finally块对try块中return变量的值做出了更改,最后方法返回的依然是try块中变量的值。