从jdk 编译 的class 解读try catch finally 的奥义

 

 总结:1 finally 里面 如果try 前面没有 System.exit(0),有return 就是最后结果,否者finally 类似于个钩子 吧,就是所有语句 return 之前 确定好值了(看编译器class 就知道了) 在会 去 执行finally 里面的语句,这里面有 return 肯定这个方法 就结束了

    catch 出异常的流程 和 try 于finally 里面 一样的逻辑 

例子1:值 没有影响 return 之前就确定 好了

 

 

 

 看看 jdk 编译后的 class,看到没 有变量 替换了 a 变量

 

 

例子2 引用 受影响 return 之前就确定了,但是里面地址的值 还是影响了,map 却不为空 ,因为 return 之前 已经确定 好了

 

 

 

 jdk 编译后的 class ,也是用 变量 替换了

 

 

 

posted @ 2019-10-30 11:34  川流不息&  阅读(211)  评论(0编辑  收藏  举报