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是如何处理异常的?finally块必须执行的原理?