try{}、catch{}、finally{}中是否可以包含return语句?
三个语句中都可以写return,但是一般finally中不写return,因为会造成返回结果有问题。
如果try{}里有一个return语句,那么紧跟在这个try后的finally{}里的代码会不会执行?
一定会执行。
public class Demo{
public static void main(String[] args) {
System.out.println(getNum());
}
public static int getNum(){
int num=10;
try{
return num++;
}catch(Exception e){
return num++;
}finally{
num++;
System.out.println(num);
}
}
}
//答案
12
10
先执行try中的语句,return (num++),此时返回的是10,而num=11,现在把返回值10存在了某个地方,执行finally,num++,此时,num=12。然后把10取出来返回。
public class Demo{
public static void main(String[] args) {
System.out.println(getNum());
}
public static int getNum(){
int num=10;
try{
return num++;
}catch(Exception e){
return num++;
}finally{
return num++;
}
}
}
//答案
11
执行try语句,此时返回10,执行finally,最终返回11,num=12。
所以一般finally中不写return,因为会造成返回结果有问题。