try代码块中包含return语句,finally代码块中不包含return语句;package Exception;
public class Test02 {
public static void main(String[] args) {
System.out.println(test());
}
public static int test(){
try{
int i=1;
return i;
}
finally{
int i=2;
System.out.println(i);
}
}
}
结果
2
1
try代码块和finally代码块中都有return语句
public class Test01 {
public static void main(String[] args) {
System.out.println(test());
}
public static int test(){
try{
int i = 1;
return i;
}
finally{
int j = 2;
return j;
}
}
}
结果
2
结论
1.如果try代码块里有return语句,而finally代码块里没有return语句,程序会先执行finally代码块里的代码然后再执行try代码块里的return语句;
2.如果try代码块和finally代码块里都有return语句,try代码块里的return语句会优先finally代码块里的return语句执行,但不会把返回的结果返回给主函数,而是会把finally代码块里return的结果返回给主函数。