首先,无论是否出现异常,finally中的语句是一定会被执行的。
其次,先执行try中语句,最后执行finally中语句
最后,return语句返回后,是先放在栈中存放,语句结束后使用。
看下面的例子:
public class TryTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(new TryTest().test() );
}
@SuppressWarnings("finally")
int test(){
try {
return res1();
} finally{
return res2();
}
}
int res1(){
System.out.println("res1");
return 1;
}
int res2(){
System.out.println("res2");
return 2;
}
}
运行结果:
res1
res2
2
可以看出,先执行try中语句,将try中返回值先保存在栈中,由于在执行完finally中语句后,返回值修改为2,所以最后得到的返回值为2.