根据java规范:在try-catch-finally中,如果try-finally或者catch-finally中都有return,则两个return语句都执行并且最终
返回到调用者那里的是finally中return的值;而如果finally中没有return,则理所当然的返回的是try或者catch中return的值,但是
finally中的代码是必须要执行的,而且是在return前执行,除非碰到exit()。
以下例子证明了上述说法:
public class Testfinal {
public static void main(String[] args) {
// TODO Auto-generated method stub
// System.out.println( new Test().test() );;
System.out.println(new Testfinal().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;
}
}
运行结果: