设为首页 加入收藏

TOP

Java虚拟机知识点-异常
2019-08-04 00:13:17 】 浏览:45
Tags:Java 虚拟 知识点 异常

??导致异常的原因


??由Java虚拟机执行的每个方法都会配有零至多个异常处理器。异常处理器描述了其在方法代码中的有效作用范围、能处理的异常类型以及处理异常的代码位置


??如果当前方法中没有找到任何异常处理器,并且当前方法调用期间确实发生了异常,那当前方法的操作数栈和局部变量表都将被丢弃,随后它对应的栈帧出栈,并恢复到该方法调用者的栈帧中。未被处理的异常将在方法调用者的栈帧重新被抛出,并在整个方法调用链里不断重复进行前面描述的处理过程。如果已经达到方法调用链顶端,却还没有找到合适的异常处理器去处理这个异常,那整个执行线程都将被终止。


??搜索异常处理器时的搜索顺序很关键,在class文件里,每个方法的异常处理器都存储在一个表中。运行时,当有异常抛出后,Java虚拟机按照class文件中的异常处理器表所描述的异常处理器的先后顺序,从前至后进行搜索。


??Java虚拟机本身不会对方法的异常处理器表进行排序或者其他方式的强制处理,所以Java语言中对异常处理的语义,实际上是通过编译器适当安排异常处理器在表中的顺序来协助完成的。


??对上面的例子进行编译javac Test.java和反编译javap -c Test.class,生成字节码命令。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Java虚拟机知识点-class文件 下一篇Java虚拟机知识点-类加载

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目