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

时间:2013-01-27 08:49:07

标签: java exception

我认为我们通常只扩展Exception类,因为我们不想打扰是否应该检查或取消选中异常。我是对的吗?

我问了另一个与此相关的问题,这里是我的问题的链接和我得到的答案https://stackoverflow.com/questions/14169866/while-creating-my-own-exception-when-should-i-extend-exception-class-and-when-sh 但我仍然有一个混乱,即我认为我们通常只扩展Exception类,因为我们不想打扰是否应该检查或取消选中异常。我是对的吗?

2 个答案:

答案 0 :(得分:2)

是的,扩展Exception而不是RuntimeException的唯一原因是检查它。

可能有一些特殊情况你想要抛出一个未经检查的异常,但是大多数情况下,当你抛出一个异常时就会这样做,因为你希望调用方法能够在抛出异常时恢复,所以你几乎总是想要使用已检查的异常。 通常,您还可以使用自己的异常来绕过程序中的低级异常,以实现更松散的耦合,即将SQLException转换为自定义的DatastoreException,以便稍后可以将SQL服务器与其他技术进行交换。

所以我们扩展Exception以使其检查,但是我没有必要认为你应该盲目地总是扩展Exception,而是考虑你需要的异常是否是RuntimeException。

答案 1 :(得分:0)

如果你看一下今天使用的一些框架,比如Spring,你会看到它提倡使用Runtime Exceptions。通常,当捕获某个异常对调用方没有意义时,您将使用运行时异常,因为它们无法对该异常执行任何操作。因此,如果需要,您可以由主叫方自行决定是否处理它。但是如果你确实使用了Exception类而不是RuntimeException类,那么主叫方需要处理这些异常,即使它们不需要,因为根据规范,它们被归类为已检查的异常。