自定义异常应该是检查异常或运行时异常

时间:2019-01-31 06:36:05

标签: java exception exception-handling runtimeexception

我通常通过继承'Exception'类来编写我的自定义异常,这使它成为受检查的异常。但是,我见过人们在编写自定义异常,该异常扩展了'RuntimeException'类,使其成为未经检查的异常。

最佳做法是什么?何时使用哪种最佳做法?

3 个答案:

答案 0 :(得分:1)

这两种方法本质上都没有错,这在很大程度上取决于您的用例。

拥有一个自定义异常层次结构的常见原因之一是,您能够智能地捕获它们并做出相应的反应,而使用运行时异常通常意味着您无意或无意捕获它们。

答案 1 :(得分:1)

对此没有特定的规则,请记住以下几点: 如果可以合理预期客户端会从异常中恢复,请将其设置为已检查的异常。如果客户端无法采取任何措施来从异常中恢复,请将其设置为未经检查的异常。

答案 2 :(得分:0)

Java语言使您可以做出决定。如果您创建的程序无法编译,通常会使其成为受检查的异常(尽管在大多数情况下Java会为您执行此操作,如果您不这样做,我将需要明确地知道您要做什么。希望程序能够编译,这可能很复杂。否则,您将使它成为RuntTimeException,并且再次,我们需要知道您要具体执行的操作。以我的个人经验,如果我要创建自定义异常,我将其简单地设为受检查的异常,因为用户了解我的程序如何运行,并且(或者我了解它的运行情况足以知道何时可能出现问题)。 。因此,我会在检查异常的一边犯错,以便任何重用我的代码的人都可以轻松理解它的工作方式以及潜在的错误。