栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在低(组装)级别如何捕获和处理异常?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在低(组装)级别如何捕获和处理异常?

试捕法的成本

大致来说,

try
block不会向结果程序集中添加任何异常检查代码。只要不引发异常,它基本上是无操作的。所有缓慢的工作都是通过异常引发代码完成的。

如果

try-catch
是JIT编译的,则 除了 代码外,还会添加一个异常表。它将可能发生已处理异常的地址范围映射到相应异常处理程序的地址。
注意: 这些不是字节码索引,而是实际的内存地址。

HotSpot中如何引发异常?

  1. 隐式异常:
    NullPointerException
    StackOverflowError
    是在响应分段错误时在信号处理程序中检测到的。
  2. ArrayIndexOutOfBoundsException
    ClassCastException
    等等。相应的检查将内联到已完成数组访问的已编译代码中。
  3. OutOfMemoryError
    只要执行线程状态转换(vm-> java或native-> java),就会显式检查从本机代码引发的所有其他异常。
  4. athrow
    字节码引发的所有用户异常。在快速路径中(当
    catch
    存在同一帧中的处理程序时),JIT编译
    athrow
    为简单跳转。否则,将发生反优化,并在VM运行时内部完成异常处理。

好吧,“如何在程序集级别捕获异常?”

绝不。
我的意思是,通常不会在程序集级别捕获异常-所有繁重的工作(堆栈移动,处理程序查找,去优化,监视器解锁等)都在VM运行时(即C代码)中完成。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/453329.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号