首先说明下:网上大多说法(finally块会执行,并都会在return之前执行)都是错误的。
package cn.yu.test001;
/**
*
* Created by myeclipse8.5.
* User: @author yu
* Time: 2011-4-19
* Company: 天极传媒集团
* Descripion: 测试
*/
public class testReturn {
public static int test() {
try {
return fun1();
} catch (Exception e) {
} finally {
return fun2();
}
}
public static int fun1() {
System.out.println("fun1被执行了");
System.out.println("fun1的确被执行了,返回么?");
return 1;
}
public static int fun2() {
System.out.println("fun2被执行了");
System.out.println("fun2的确被执行了,返回么?");
return 2;
}
public static void main(String[] args) {
System.out.println(testReturn.test());
}
}
结果:fun1被执行了
fun1的确被执行了,返回么?
fun2被执行了
fun2的确被执行了,返回么?
2
证明什么?finally并没有在之前执行,第一个执行的还是try里面的内容但是没有立刻返回,等待执行finally,当finally返回结果后执行完毕。
并不是网上大多数的说法
还有要说明下 如果finally里面没有返回值,则返回try里面的返回值。