课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
异常处理是程序员在学习java编程语言需要重点关注和解决的一个软件开发问题,而今天我们就通过案例分析来了解一下,java虚拟机异常处理都有哪些方法。
一、JVM是如何捕获异常的?
1、编译而成的字节码中,每个方法都附带一个异常表。
2、异常表中每一个条目代表一个异常处理器
3、触发异常时,JVM会遍历异常表,比较触发异常的字节码的索引值是否在异常处理器的from指针到to指针的范围内。
4、范围匹配后,会去比较异常类型和异常处理器中的type是否相同。
5、类型匹配后,会跳转到target指针所指向的字节码(catch代码块的开始位置)
6、如果没有匹配到异常处理器,会弹出当前方法对应的Java栈帧,并对调用者重复上述操作。
二、什么是异常表?
1.每个方法都附带一个异常表
2.异常表中每一个条目,就是一个异常处理器
三、什么是异常处理器?其组成部分有哪些?
1、异常处理器由from指针、to指针、target指针,以及所捕获的异常类型所构成(type)。
2、这些指针的数值就是字节码的索引(bytecodeindex,bci),可以直接去定位字节码。
3、from指针和to指针,标识了该异常处理器所监控的返回
4、target指针,指向异常处理器的起始位置。如catch代码块的起始位置
5、type:捕获的异常类型,如Exception
四、如果在方法的异常表中没有匹配到异常处理器,会怎么样?
1、会弹出当前方法对应的Java栈帧
2、在调用者上重复异常匹配的流程。
3、坏情况下,JVM需要编译当前线程Java栈上所有方法的异常表
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请在707945861群中学习了解。