finally 和 return 关键字
一般提到finally,大家都知道,在try语句中,无论是否catch到Exception,都会执行finally语句。
那么,如果同时含有return关键字,还会执行finally语句吗,若执行,是先return还是先finally呢?
其实这个问题并不难,自己写一个程序一下就可以验证了,但是一般的java初学者会忽视或混淆这个情况,下面我们来个小例子验证一下:
public class TestFinally {
int a = 0;
public static void main (String[] args) {
System.out.println(TestFinally.test(1));
}
public static int test (int a) {
try {
a = 1;
} catch (Exception e) {
e.printStackTrace();
} finally {
a = a +2;
}
return a;
}
}
运行上面的代码,输出结果是3,说明在这种return情况下,先执行了finally
那么,如果在try语句中, a = 1; 语句下面加上 return a; 语句 呢?
如:
try {
a = 1;
return a;
}
输出结果就变为了1 ~!,有意思吧,呵呵
浙公网安备 33010602011771号