我是否应该在 throws 规范中声明未经检查的异常?
我知道必须处理或指定已检查的异常,但未选中的异常是可选的。
如果由于某种原因,我可以合理地预期方法中发生未经检查的异常,我是否应该将其添加到 throws 规范中?还是应该尽可能缩短规格?
我知道必须处理或指定已检查的异常,但未选中的异常是可选的。
如果由于某种原因,我可以合理地预期方法中发生未经检查的异常,我是否应该将其添加到 throws 规范中?还是应该尽可能缩短规格?
如果由于某种原因,我可以合理地预期方法中发生未经检查的异常,我是否应该将其添加到 throws 规范中?
由于未经检查的异常表示编程错误,因此应避免在子句中声明它们。通常,不应尝试捕获这些异常,除非是程序的最高级别。此规则有一些例外(双关语意图) - 例如,在生产代码中,您应该捕获 。throws
NumberFormatException
注意:有时,框架的作者会继承他们的基本异常(例如HibernateException
)。像这样的例外也应该被抓住。RuntimeException
这是一个设计决策。通常你不会这样做。但是,如果您认为代码的用户捕获 至关重要,那么这是一种提示他这样做的方法。另一种方法是将其添加到文档中,并解释为什么捕获 .Exception
Exception