当前位置: 首页 > news >正文

记录学习--字节码解析try catch

1.示例代码

	@Testpublic void someTest() {String s = "111";try {s = "222";int i = 1/0;} catch (Exception e){e.printStackTrace();System.out.println(s);}System.out.println(s);}

2.示例代码对应的字节码

 0 ldc #2 <111>2 astore_13 ldc #3 <222>5 astore_16 iconst_17 iconst_08 idiv9 istore_2
10 goto 25 (+15)
13 astore_2
14 aload_2
15 invokevirtual #5 <java/lang/Exception.printStackTrace : ()V>
18 getstatic #6 <java/lang/System.out : Ljava/io/PrintStream;>
21 aload_1
22 invokevirtual #7 <java/io/PrintStream.println : (Ljava/lang/String;)V>
25 getstatic #6 <java/lang/System.out : Ljava/io/PrintStream;>
28 aload_1
29 invokevirtual #7 <java/io/PrintStream.println : (Ljava/lang/String;)V>
32 return

异常表

3.说明

代码一般看得懂,从字节码说明,字节码和代码一起看,看的更清晰。
①0、2声明变量s。
②3到10是try部分代码,如果这段代码之间有Exception的异常,就从发生异常的位置跳到13。注意:跳之前的代码也是执行了的。
③如果没发生异常,在10的位置就直接跳到25,并继续执行后面的字节码。
④如果发生了异常,就跳到13,并继续执行13后面的字节码。

4.执行结果

异常打印的栈内容省略了。

java.lang.ArithmeticException: / by zero
222
222
http://www.lryc.cn/news/148845.html

相关文章:

  • 多线程与高并发——并发编程(3)
  • 关于内网主备+https
  • java入坑之网络编程
  • A Survey on Large Language Model based Autonomous Agents
  • Integer、Long 等包装类 == 值判断、地址判断与缓存
  • numpy学习:reshape和resize
  • JPA在不写sql的情况下实现模糊查询
  • Java设计模式之单例模式
  • Vue3 学习
  • Error obtaining UI hierarchy Error taking device screenshot: EOF/NULL 解决办法
  • Java框架之王:Spring的崛起与进化
  • 【位运算】位运算常用技巧总结
  • 【STM32】IIC使用中DMA传输时 发送数据总少一个的问题
  • 记录layui数据表格使用文件上传按钮
  • c++之枚举
  • LeetCode 热题 100(七):105. 从前序与中序遍历序列构造二叉树、14. 二叉树展开为链表
  • 机器学习笔记 - 在表格数据上应用高斯混合GMM和网格搜索GridSearchCV提高分类精度的机器学习案例
  • 【UE 材质】模型部分透明
  • Web3 社交平台如何脱颖而出?我们和 PoPP 聊了聊
  • 【Android】ARouter新手快速入门
  • 基于VUE3+Layui从头搭建通用后台管理系统(前端篇)十一:通用表单组件封装实现
  • Oracle Scheduler学习
  • 用户体验地图是什么?UX设计心得分享
  • vue3动态路由警告问题
  • 17 Linux之大数据定制篇-Shell编程
  • SpringBoot集成WebSocket
  • Linux服务器部署JavaWeb后端项目
  • 原生小程序 wxs 语法(详细)
  • MySQL中count(*)和count(1)和count(column)使用比较
  • python用 xlwings库对Excel进行 字体、边框设置、合并单元格, 版本转换等操作