Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么我们总是扩展Exception类而不是RuntimeEexception类?_Java_Exception - Fatal编程技术网

Java 为什么我们总是扩展Exception类而不是RuntimeEexception类?

Java 为什么我们总是扩展Exception类而不是RuntimeEexception类?,java,exception,Java,Exception,我认为我们通常只扩展Exception类,因为我们不想担心是否应该检查或取消检查异常。我说得对吗 我问了另一个与此相关的问题,这里是我的问题和答案的链接 但是我仍然有一个困惑,也就是说,我认为我们通常只扩展Exception类,因为我们不想为是否应该检查异常而烦恼。我说得对吗?是的,扩展异常而不是运行时异常的唯一原因是检查它 在某些特殊情况下,您可能确实希望抛出未检查的异常,但大多数情况下,当您抛出异常时,您这样做是因为您希望调用方法能够在抛出异常时恢复,因此您几乎总是希望使用已检查的异常。 通

我认为我们通常只扩展Exception类,因为我们不想担心是否应该检查或取消检查异常。我说得对吗

我问了另一个与此相关的问题,这里是我的问题和答案的链接
但是我仍然有一个困惑,也就是说,我认为我们通常只扩展Exception类,因为我们不想为是否应该检查异常而烦恼。我说得对吗?

是的,扩展异常而不是运行时异常的唯一原因是检查它

在某些特殊情况下,您可能确实希望抛出未检查的异常,但大多数情况下,当您抛出异常时,您这样做是因为您希望调用方法能够在抛出异常时恢复,因此您几乎总是希望使用已检查的异常。 通常,您也会使用自己的异常来包装程序中较低级别的异常,以实现更松散的耦合,即将SQLException转换为自定义DatastoreException,以便以后可以将SQL server换成其他技术


因此,我们扩展异常以检查它,但是我不需要认为您应该盲目地总是扩展异常,而应该考虑如果您需要的异常可能是RunTimeExtExcor。

< P>如果您查看现在使用的一些框架(例如施普灵河),您会看到它提倡使用运行时异常。通常,当捕获某个异常对调用方没有意义时,您将使用运行时异常,因为调用方无法对该异常执行任何操作。因此,如果呼叫方需要,您可以自行决定是否处理。但是如果您确实使用Exception类而不是RuntimeException类,那么调用方需要处理这些异常,即使它们不需要,因为根据规范,这些异常被分类为检查异常