finally的执行顺序问题

题目1 :

       @Test
    public void test()  {

       System.out.println(test11());
    }


    public  String test11() {
        try {
            System.out.println("try block");

            return test12();
        } finally {
            System.out.println("finally block");
        }
    }

    public static String test12() {
        System.out.println("return statement");

        return "after return";
    }

结果:

try block 
return statement 
finally block 
after return

总结:finally块的语句在try或catch中的return语句执行之后,并在其返回之前执行且finally里的修改语句可能影响也可能不影响try或catch中 return已经确定的返回值,若finally里也有return语句则覆盖try或catch中的return语句直接返回。

你可能感兴趣的:(java相关)