You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JVM能否在进入try块前轮询异步异常?合规性验证问询

关于JVM异步异常轮询与Thread.stop()的疑问

我最近研究了JLS 11.1.3异步异常相关内容,有以下几个疑问:

异步异常轮询的位置规范

先看这段示例代码:

try {
    statement1();
} finally {
    // comment
    try {
        statement2();
    } finally {
        statement3();
    }
}

已知如果在任意statement#()处轮询并抛出异步异常,其余语句仍会执行,但我不确定:是否存在合规的JVM实现,会在注释所在的位置(进入内层try块之前)轮询异常,导致statement2和statement3都不执行?

JLS里提到异步异常“可能在程序执行的任意点发生”,但我搞不清两个关键点:

  • 异步异常的轮询是否必须依托某个语句?
  • 这里的“语句”具体定义是什么?

Thread.stop()相关测试的合规性验证

我写了用废弃的Thread#stop()方法触发异步异常的测试代码,目前运行的结果是程序不会终止。想确认:当仅触发ThreadDeath异常时,所有合规JVM都能保证这个结果吗?

另外,如果把示例代码里的注释改成一条语句,程序可能会终止,这个现象是否符合JVM规范?

内容的提问来源于stack exchange,提问作者stonar96

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 08:08:17