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

南阳阿里巴巴网站推广从网站下载壁纸做海报涉及

南阳阿里巴巴网站推广,从网站下载壁纸做海报涉及,做网站业务员,wordpress投稿 图片从字节码的角度异常处理 生成字节码Javap 命令的使用基本语法 字节码文件testTryCatchtestTryCatchFinallytestTryWithResource 如果大家对与java的异常使用还有问题或者还不太了解#xff0c;建议先看一下我之前写的Java异常了解一下基本 的异常处理知识#xff0c;再看这篇… 从字节码的角度异常处理 生成字节码Javap 命令的使用基本语法 字节码文件testTryCatchtestTryCatchFinallytestTryWithResource 如果大家对与java的异常使用还有问题或者还不太了解建议先看一下我之前写的Java异常了解一下基本 的异常处理知识再看这篇文章。 生成字节码 public class Test27 {public String testTryCatch() {try {int a 1;int b 0;return String.valueOf(a / b);} catch (ArithmeticException e) {return divide 0 ;}}public String testTryCatchFinally() {try {int a 1;int b 0;return String.valueOf(a / b);} catch (ArithmeticException e) {return divide 0 ;}finally {System.out.println(finally);}}public String testTryWithResource() {try {int a 1;int b 0;return String.valueOf(a / b);} catch (ArithmeticException e) {return divide 0 ;}finally {System.out.println(finally);}}}执行javac命令编译成字节码文件 D:\project\mydemo\src\main\java\com\example\mydemo\testjavac Test27.javaJavap 命令的使用 javap 是 Java 提供的反汇编工具用于将 Java 字节码文件.class 文件反汇编成人类可读的 Java 汇编代码或者说是 Java 字节码的指令。这对于理解 Java 编译器生成的字节码、学习 JVM 的工作原理、调试和优化代码都非常有用。 基本语法 javap [options] classesD:\project\mydemo\src\main\java\com\example\mydemo\testjavap -c Test27.class常用选项 -c显示字节码指令反汇编。-verbose显示详细信息包括类、字段、方法的签名和属性。-l显示行号和本地变量表信息。-p显示所有私有成员、受保护成员和默认包访问级别的成员。-constants显示静态常量池。-classpath 或 -cp 指定类路径。 -s显示内部类型签名。-public仅显示公共成员和类。-protected显示公共和受保护成员和类默认行为。-package显示公共和包访问级别的成员和类不加 -p 时默认行为。-private显示所有成员和类包括私有成员。 字节码文件 生成的完整的字节码文件我传上来了有需要的可以下载这里我们逐个分析每个方法的字节码。 testTryCatch public java.lang.String testTryCatch();Code:0: iconst_11: istore_12: iconst_03: istore_24: iload_15: iload_26: idiv7: invokestatic #7 // Method java/lang/String.valueOf:(I)Ljava/lang/String;10: areturn11: astore_112: ldc #15 // String divide 014: areturnException table:from to target type0 10 11 Class java/lang/ArithmeticException0到3行是把1跟0这两个常量存到slot里面4到6是把两个操作数入栈然后做除法。然后下面是异常表如果from0 to 10 发生异常跳转到target11行处理。 testTryCatchFinally public java.lang.String testTryCatchFinally();Code:0: iconst_11: istore_12: iconst_03: istore_24: iload_15: iload_26: idiv7: invokestatic #7 // Method java/lang/String.valueOf:(I)Ljava/lang/String;10: astore_311: getstatic #17 // Field java/lang/System.out:Ljava/io/PrintStream;14: ldc #23 // String finally16: invokevirtual #25 // Method java/io/PrintStream.println:(Ljava/lang/String;)V19: aload_320: areturn21: astore_122: ldc #15 // String divide 024: astore_225: getstatic #17 // Field java/lang/System.out:Ljava/io/PrintStream;28: ldc #23 // String finally30: invokevirtual #25 // Method java/io/PrintStream.println:(Ljava/lang/String;)V33: aload_234: areturn35: astore 437: getstatic #17 // Field java/lang/System.out:Ljava/io/PrintStream;40: ldc #23 // String finally42: invokevirtual #25 // Method java/io/PrintStream.println:(Ljava/lang/String;)V45: aload 447: athrowException table:from to target type0 11 21 Class java/lang/ArithmeticException0 11 35 any21 25 35 any35 37 35 any 这段字节码我们主要观察Exception table很明显 0 - 11 行如果发生Class java/lang/ArithmeticException则跳转到21行开始执行。0 - 11行没有发生异常则跳转到35行开始执行实际上你仔细看的话会发现35行之后是finally的那部分。21 - 25行执行的是catch块里面的语句执行完之后也会自动跳转到35行执行35 - 37行执行的是把异常class保存起来以便执行throw的时候能正常抛出去。 testTryWithResource public java.lang.String testTryWithResource();Code:0: new #31 // class java/io/FileInputStream3: dup4: ldc #33 // String teset6: invokespecial #35 // Method java/io/FileInputStream.init:(Ljava/lang/String;)V9: astore_110: ldc #37 // String ok12: astore_213: aload_114: invokevirtual #39 // Method java/io/FileInputStream.close:()V17: getstatic #17 // Field java/lang/System.out:Ljava/io/PrintStream;20: ldc #23 // String finally22: invokevirtual #25 // Method java/io/PrintStream.println:(Ljava/lang/String;)V25: aload_226: areturn27: astore_228: aload_129: invokevirtual #39 // Method java/io/FileInputStream.close:()V32: goto 4135: astore_336: aload_237: aload_338: invokevirtual #44 // Method java/lang/Throwable.addSuppressed:(Ljava/lang/Throwable;)V41: aload_242: athrow43: astore_144: aload_145: invokevirtual #50 // Method java/io/IOException.printStackTrace:()V48: getstatic #17 // Field java/lang/System.out:Ljava/io/PrintStream;51: ldc #23 // String finally53: invokevirtual #25 // Method java/io/PrintStream.println:(Ljava/lang/String;)V56: goto 7259: astore 461: getstatic #17 // Field java/lang/System.out:Ljava/io/PrintStream;64: ldc #23 // String finally66: invokevirtual #25 // Method java/io/PrintStream.println:(Ljava/lang/String;)V69: aload 471: athrow72: ldc #37 // String ok74: areturnException table:from to target type10 13 27 Class java/lang/Throwable28 32 35 Class java/lang/Throwable0 17 43 Class java/io/IOException27 43 43 Class java/io/IOException0 17 59 any27 48 59 any59 61 59 any最后这段字节码我就不带大家一起读了实际上你自己看就会发现实际上TryWithResource是语法糖把之前我们写的一些cath的内容编译器帮我们添加进去了。编译器自动关闭资源的同时也帮助我们把异常处理加了进去。如果有疑问的欢迎评论私信我。我有时间都会给大家回复解答的。
http://www.hkea.cn/news/14373086/

相关文章:

  • 如何自己学做网站西安网站建设案例
  • 个人网站logo设计做网站能申报只是产权么
  • 长春网站seo定做网站建设
  • 用手机怎么做网站广西壮族自治区建设厅官方网站
  • 网站建设公司税率网站怎么做关键词库
  • 太原seo外包公司简单的网站更新 关键词优化 关键词互联
  • 在百度上建网站怎么建设互联网服务平台登录
  • 松江网站建设多少钱网站建设合同 简单
  • 创办网站需要多少钱山东网页设计公司
  • 网站建设费税率是多少四川省省建设厅网站
  • 做外贸网站注意事项公司网站建设代理
  • 物流网站建设评析廊坊推广seo霸屏
  • 制作微信网站宣传推广方式
  • 网页制作登录界面代码东莞seo网站优化运营
  • 怎么在地图上设置自己店的位置西安网站seo外包
  • 品牌网站建设专家医疗器械网上采购平台
  • 网站下拉菜单重叠如何用群晖nas做网站
  • 哪个网站可以做高数题如何模仿一个网站
  • 大庆最新消息今天重庆网站seo多少钱
  • 株洲市哪里有做公司官方网站百度人工服务24小时
  • 建立网站图书馆第一代网站建设
  • 农村建设自己的网站金融品牌网站设计
  • 网站是用什么做的农业行业网站模板
  • 巴中哪里可以做公司网站安徽淮北做网站的公司有哪些
  • php网站程序怎么安装杭州响应式网站建设
  • 南宁手机模板建站wordpress手机短信插件
  • 在线音乐网站开发数据库商标图案自动生成
  • 做代还的人都聚集在哪些网站网站需求分析文档
  • 模块化网站建设做企业网站多
  • 网站管理员权限设置权限设置asp网站的缺点