在try-catch-finally中,如果try-finally或者catch-finally中都有return,则两个return语句都执行并且最终 返回到调用者那里的是finally中return的值;而如果finally中没有return,则理所当然的返回的是try或者catch中return的值,但是 finally中的代码是必须要执行的,而且是在return前执行,除非碰到exit()。 例子: public class Test { public static void main(String[] args) { System.out.println(new Test().test()); } static int test() { int x = 1; try { return x; } finally { ++x; } } } ---------执行结果 --------- 1 public class Test { public static void main(String[] args) { // TODO Auto-generated method stub 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; } } -----------执行结果----------------- func1 func2 2 |