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
相关产品推荐
相关产品推荐

