当前位置:科技动态 > 【第281期】滴滴2:try-catch-finally和return是按照什么顺序执行的?

【第281期】滴滴2:try-catch-finally和return是按照什么顺序执行的?

  • 发布:2023-10-04 10:23

2022年5月17日下午4:08 • 面试问题 • 阅读 5 最近在看Java虚拟机规范,发现直接分析字节码可以加深对Java语言的理解。 之前看过一篇关于return和finally的执行顺序的文章,只是从Java的语言层面进行了分析。其实我觉得直接看字节码可能会更清楚。 我们先看一个只有 try-finally 没有 catch 的例子。 尝试——最后 公共无效tryCatchFinally();代码: 0:aload_0 1:invokevirtual #2 4:aload_0 5:invokevirtual #3 8:转到31 11:astore _1 12:aload_0 13:aload_1 14:invokevirtual #5 17:aload_0 18:invokevirtual #3 21:转到31 24 :astore_2 25:aload_0 26:invokevirtual #3 29:aload_2 30:athrow 31:返回异常表:从到目标类型0 4 11 Class TestExc 0 4 24 any 11 17 24 any 从Exception表可以看出: catch 监视 TextExc 类型的 0 ~ 4 字节异常。 对于任何类型的异常,finally 都是 0 ~ 4 和 11 ~ 17 字节。换句话说,catch 块本身也在finally 块的管辖范围之内。 如果catch块中有return语句,则必须在finally块之后执行。 来源:http://www.sychzs.cn/ 结尾 推荐十期 【第271期】面试官:Spring MVC的流程是怎样的? 【第272期】数据结构:哈希表原理及面试常见考点【第273期】告诉面试官我可以优化groupBy,而且我很了解! 【第274期】面试官:如何保证缓存和数据库的一致性 【第275期】面试官:你对MySQL中的索引了解多少? 【第276期】面试官:你分析过@Annotation注解的实现原理吗? 【第277期】面试官:说一下常用的几种分布式ID方案 【第278期】面试官:都说select *效率低。你知道原因吗? 【第279期】面试官:Java中遍历Map集合的方式有哪些?他们的效率如何? 【第280期】k8s面试要问什么? 而不是在网上搜索问题?还不赶快关注我们吧~ 版权声明:本文内容由网友自愿贡献,本文所表达的观点仅代表作者自己的观点。本网站仅提供信息存储空间服务,不拥有任何所有权,也不承担相关法律责任。如果您发现本站有任何涉嫌侵权/非法内容,请发送邮件举报。一经核实,该网站将立即删除。 本文由斑马博客整理。本文链接为:https://www.sychzs.cn/index.php/post/8230.html

相关文章