Java 为什么我们总是扩展Exception类而不是RuntimeEexception类?
我认为我们通常只扩展Exception类,因为我们不想担心是否应该检查或取消检查异常。我说得对吗 我问了另一个与此相关的问题,这里是我的问题和答案的链接Java 为什么我们总是扩展Exception类而不是RuntimeEexception类?,java,exception,Java,Exception,我认为我们通常只扩展Exception类,因为我们不想担心是否应该检查或取消检查异常。我说得对吗 我问了另一个与此相关的问题,这里是我的问题和答案的链接 但是我仍然有一个困惑,也就是说,我认为我们通常只扩展Exception类,因为我们不想为是否应该检查异常而烦恼。我说得对吗?是的,扩展异常而不是运行时异常的唯一原因是检查它 在某些特殊情况下,您可能确实希望抛出未检查的异常,但大多数情况下,当您抛出异常时,您这样做是因为您希望调用方法能够在抛出异常时恢复,因此您几乎总是希望使用已检查的异常。 通
但是我仍然有一个困惑,也就是说,我认为我们通常只扩展Exception类,因为我们不想为是否应该检查异常而烦恼。我说得对吗?是的,扩展异常而不是运行时异常的唯一原因是检查它 在某些特殊情况下,您可能确实希望抛出未检查的异常,但大多数情况下,当您抛出异常时,您这样做是因为您希望调用方法能够在抛出异常时恢复,因此您几乎总是希望使用已检查的异常。 通常,您也会使用自己的异常来包装程序中较低级别的异常,以实现更松散的耦合,即将SQLException转换为自定义DatastoreException,以便以后可以将SQL server换成其他技术
因此,我们扩展异常以检查它,但是我不需要认为您应该盲目地总是扩展异常,而应该考虑如果您需要的异常可能是RunTimeExtExcor。
< P>如果您查看现在使用的一些框架(例如施普灵河),您会看到它提倡使用运行时异常。通常,当捕获某个异常对调用方没有意义时,您将使用运行时异常,因为调用方无法对该异常执行任何操作。因此,如果呼叫方需要,您可以自行决定是否处理。但是如果您确实使用Exception类而不是RuntimeException类,那么调用方需要处理这些异常,即使它们不需要,因为根据规范,这些异常被分类为检查异常