try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?
答:会执行,在return前执行
public class Main {
/*try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,
什么时候被执行,在return前还是后?
答:会执行,在return前执行。*/
public static void main(String[] args) {
System.out.println("main:"+testFinally(2));
}
public static Integer testFinally(Integer integer){
Integer a = 0;
try {
a = a+integer;
System.out.println("try:"+a);
return a;
}catch (Exception e){
e.printStackTrace();
}finally {
//在finally里面对变量的修改不生效,变量以在try里面return时的值为准
a = a+integer+10;
System.out.println("finally:"+a);
}
//return返回值后,余下代码不走
System.out.println("try后面,外部的return代码段前:"+a);
return a;
}
}
控制台输出结果: