Java中的try finally 的原理
情况一: doTryFinally1() 就是try 中修改值并且return
Java 代码:
1 | 复制代码 |
字节码: (加括号是自己的理解)
1 | 复制代码 |
结论:
finally 的代码块编译后都会接到 try 代码块之后
1.如果 try 代码块中return ,就return 了 2.如果 try 代码块后还有代码继续执行,则会出现 goto 指令,跳转到下段指令 然后在 exception table 中注册了 any 异常 如果在 try 内抛了异常,就会去异常表找到 any 然后,跳转到对应的 target 代码段继续执行
测试的Java 代码
1 | 复制代码 |
字节码 (javap -verbose TryFinallyTest)
1 | 复制代码 |
本文转载自: 掘金