标签:
很明显在中间执行!
看看代码,finally中间没有return返回1:
public class ABC { @SuppressWarnings("static-access") public static void main(String[] args) { System.out.println("结果: " + new ABC().test()); } static int test(){ int i = 1; try { System.out.println("try里面的i : " + i); return i; }finally{ System.out.println("进入finally..."); ++i; System.out.println("fianlly里面的i : " + i); //return i; } } }
结果是:
再看代码:finally中间有return返回2:
public class ABC { @SuppressWarnings("static-access") public static void main(String[] args) { System.out.println("结果: " + new ABC().test()); } static int test(){ int i = 1; try { System.out.println("try里面的i : " + i); return i; }finally{ System.out.println("进入finally..."); ++i; System.out.println("fianlly里面的i : " + i); return i; } } }
结果是:
因此,如果finally中没有return则最终会执行try中的return 而且返回值是当时在try中存储的值,若,finally中间有return则返回finally中的值。
另外再看代码:
class Test { public static void main(String[] args) { System.out.println(new Test().test());; } int test() { try { return func1(); }finally{ return func2(); } } int func1() { System.out.println("func1"); return 1; } int func2() { System.out.println("func2"); return 2; } }
结果为:
try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行
标签:
原文地址:http://www.cnblogs.com/wushenghfut/p/5286301.html