try、catch、finally的执行顺序

public class Test {
    public static void main(String a[]){
        System.out.println(test());
    }
    
    public static int test() {
        int i = 10;
        try {
            System.out.println("Start...");
            return i+=10;
        } catch (Exception e) {
            System.out.println("error...");
        }finally {
            if(i>10) {
                System.out.println(i);
            }
            System.out.println("finally...");
        }
        return i;
        
    }
}

cmd打开命令行

javac Test,java

javap -c Test

结论:

1.对于上面代码输出结果我心中的答案是 //start... //finally... //20,程序运行后,发现是错的。

原因:虚拟机并不是以代码行为运行单位,而是编译后的指令。从反编译截图来看,代码实际被编译成这样。

try{}  3-16

finally{}

return;

catch{}  

finally{}

return;

finally{}

return;

猜你喜欢

转载自www.cnblogs.com/wqff-biubiu/p/9261426.html