JVM 如何处理 RuntimeException(s)

Posted

技术标签:

【中文标题】JVM 如何处理 RuntimeException(s)【英文标题】:How does JVM handles RuntimeException(s) 【发布时间】:2014-09-08 01:15:46 【问题描述】:

在创建自定义异常时,如果我们想创建 checked 异常,我们扩展 Exception 类,对于 unchecked 异常,我们扩展 RuntimeException 类。 我的问题是,当它们都是 Exception 类的子类时,JVM 如何以不同的方式处理 RuntimeException 和 Exception 的子类。

【问题讨论】:

【参考方案1】:

它没有。唯一的区别在于编译器强制执行的要求。

【讨论】:

【参考方案2】:

您误认为 JVM 以不同方式处理异常,但如果您询问 编译器 如何以不同方式处理异常,您的问题仍然有效。

这有一个简单的答案:规则并没有说明Exception 的所有子类都是检查异常。那些也是RuntimeException 的子类的都是未选中的。

【讨论】:

感谢William 的回复,其实这是我关心的问题。两个属于 instanceof 类型的子类 Exception 仍然由编译器以不同方式处理。此外,您说“规则没有说明 Exception 的所有子类都是检查异常”,但是为什么 Exception(only) 的每个子类都被视为检查异常。 我不明白你的问题:Exception 的每个子类(不是RuntimeException 的子类)都被视为已检查异常,这就是定义。 “怎么来”是什么意思? @gaurs, ""但是为什么 Exception(only) 的每个子类都被视为已检查异常。"" 它检查 instanceof RuntimeException 是否然后 -> 未检查异常! else if instanceof Exception then -> Checked Exception !

以上是关于JVM 如何处理 RuntimeException(s)的主要内容,如果未能解决你的问题,请参考以下文章

JVM虚拟机-- JVM是如何处理异常的

JVM 是如何处理异常的?

JVM-JVM 是如何处理异常的

浅析JVM是如何处理异常的?finally块必须执行的原理?

浅析JVM是如何处理异常的?finally块必须执行的原理?

浅析JVM是如何处理异常的?finally块必须执行的原理?