美文网首页
异常处理与异常表

异常处理与异常表

作者: Shaw_Young | 来源:发表于2021-09-15 15:01 被阅读0次

    1、处理异常:

    在Java虚拟机中,处理异常(catch语句)不是由字节码指令来实现的(早期使用jsr、ret指令),而是采用异常表来完成的

    2、异常表:

    如果一个方法定义了一个try-catch或者try-finally的异常处理,就会创建一个异常表。它包含了每个异常处理或者finally块的异常。异常表保存了每个异常处理信息。比如:

    • 起始位置
    • 结束位置
    • 程序计数器记录的代码处理的偏移地址
    • 被捕获的异常类在常量池的索引

    当一个异常被抛出时,JVM会在当前的方法里寻找一个匹配的处理,如果没有找到,这个方法会强制结束并弹出当前栈帧,并且异常会重新抛给上层调用的方法(在调用方法栈帧)。如果在所有栈帧弹出前仍然没有找到合适的异常处理,这个线程将终止。如果这个异常在最后一个非守护线程里抛出,将会导致JVM自己终止,比如这个线程是个main线程。

    不管什么时候抛出异常,如果异常处理最终匹配了所有异常类型,代码就会继续执行。在这种情况下,如果方法结束后没有抛出异常,仍然执行finally块,在return前,它直接跳到finally块来完成目标。

    梦想很模糊,去追,它会渐变清晰。青春励志,奋斗下去别放弃。

    相关文章

      网友评论

          本文标题:异常处理与异常表

          本文链接:https://www.haomeiwen.com/subject/xcgkgltx.html