【发布时间】:2016-09-07 07:45:25
【问题描述】:
下图显示“Checked”和“Unchecked”异常是Exception的子类。我发现您需要捕获Exception 但您不需要捕获直接从Exception 继承的RuntimeException,这让我感到困惑。开发人员不让我们在不需要捕获它们的情况下抛出异常是有原因的吗?
更具体地说:为什么您只能忽略 RuntimeExceptions 和它的孩子?为什么没有引入一个名为 CheckedException extends Exception 的 Class 而你只需要抓住它和它的孩子?
令人困惑的部分是,您可以毫无问题地将所有内容扔到 RuntimeException 以下,但是当您在层次结构中向上移动到 Exception 时,您需要在某个时候抓住它。这令人困惑,因为“抽象”通常以其他方式工作。你越往上走,一切都会变得越简单、越元。这不是这里的情况。你越往上走,你要做的事情就越多(比如,在到达Exception 之后使用 try/catch)。
【问题讨论】:
-
我想如果你捕捉到
Exception,你会捕捉到所有异常以及该异常类的任何后继者? -
无论出于何种原因,Java 的设计者认为检查异常是个好主意,他们还决定默认检查所有
Throwables,除非通过子类化Error或RuntimeException明确排除。
标签: java exception exception-handling