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

“空语句”可能(不)引发哪些Java错误和异常?

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

“空语句”可能(不)引发哪些Java错误和异常?

由于您是指JVMS,因此我假设您是在寻求正式答案,而正式答案是您的问题实际上没有任何意义。:-)

询问JVM 如何 执行Java源代码片段就像询问数学家 正确 的10 + 10计算方式。数学家可能会说类似“ 未定义 如何
计算”之类的内容。同样,定义Java代码段含义的JLS也没有详细说明 如何 执行它。

因此,首先让我稍微形式化一下您的问题:“在与给定Java代码段相对应的 字节码中
(由的引用实现发出

javac
)会
VirtualMachineErrors
出现在哪里?”

这个问题可以说很容易回答。JVMS的相关部分说

VirtualMethodError
当内部错误或资源限制使Java虚拟机实现无法实现本章中描述的语义时,将抛出一个对象,该对象是该类的子类的实例。该规范无法预测可能会遇到内部错误或资源限制的位置,并且无法准确地报告何时可以报告它们。

因此,答案是:在任何两个字节码指令之间。

现在回到您的原始问题:例如,此片段

try {     // nothing} catch (java.lang.Throwable e) {     // which Throwable subclass might we see?}

被编译为空程序,该程序无法合理地引发任何异常。


关于您在评论中的后续问题:

是否应将JLS 11.1.3理解为“

Throwable
除非是的子类,否则保证在字节码之间不出现
VirtualMachineError

的子类?

是的,你可以这样说。我的措词可能会有所不同:任何指令都会引起

  • JVM指令集为相关指令指定的异常,
  • 类型的任何例外
    VirtualMachineError
  • 没有其他例外


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

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

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