java虚拟机异常抓取都有哪些方法
2021-3-17 13:05:25 | 点击19次我们在上文中给大家简单介绍了JAVA编程开发异常问题的一些基础知识,而今天我们就再来了解一下, java虚拟机异常抓取都有哪些方法。
在编译生成的字节码中,每个方法都附带一个异常表。异常表中,每一个条目代表一个异常处理器,并且由from指针、to指针和target指针以及所捕获的异常类型构成。这些指针的值是字节码索引(bytecodeindex,bci)用以定位字节码。其中feom指针和to指针标示了该异常处理器所监控的范围,例如try代码块所覆盖的范围。target指针则指向异常处理器的起始位置,例如catch代码块的起始位置。
当程序触发异常时,JVM会从上至下遍历异常表中的所有条目。当触发异常的字节码的索引值在某个异常表条目的监控范围内,JVM会判断所抛出的异常和该条目想要捕获的异常是否匹配。如果匹配,JVM会将控制流转移至该条目target指针指向的字节码。如果遍历完所有的条目,JVM仍未匹配到异常处理器,那么它会弹出当前方法所对应的java栈帧,并且在调用者(caller)中重复上述操作。在坏的情况下,JVM需要遍历当前线程java栈上所有方法的异常表。
finally代码块的编译比较复杂。当前版本java编译器的做法,是复制finally代码块的内容,分别放在try-catch代码块所有正常执行路径以及异常执行路径的出口中。针对异常执行路径,java编译器会生成一个或多个异常表条目,监控整个try-catch代码块,并且捕获所有种类的异常。这些异常表条目的target指针将指向将指向另一份复制的finally代码块。并且,在这个finally代码块的后,java编译器会重新抛出所捕获得异常。
资讯来源:合肥达内软件有限公司

- 没有相关新闻!
①医疗在线上发布的所在信息未经本网授权,不得转载、摘编或利用其它方式使用。已经本网授权使用作品的,应在授权范围内使用,并注明“来源:医疗在线”或“来源:http://www.120eyes.com”。违反上述声明者,本网将追究其相关法律责任。
②本网转载其他媒体稿件是为了传播更多的信息,此类稿件不代表本网观点。如果本网转载的稿件涉及您的版权、名誉权等问题,请尽快与本网联系,本网将依照国家相关法律法规尽快妥善处理。