宠物小精灵异常处理不好。特别是,如果这是一个空块,而您只是在吞下它们。您使用了特殊类型的异常,原因是它们实际上是在特定上下文中表示特定事物(实际上,它们是在告诉您出了什么问题)。因此,通过捕获
Exception您是在说您不在乎那些异常是什么,并且您不在乎发生了什么。这可能不是您想要的。
通常,捕获异常时请遵循以下规则:
- 在此级别处理异常是否有意义?如果是,则进行处理。如果不是,则传播。
- 结合第一条规则,“处理”还可以表示捕捉,包裹和重新投掷。这是防止抽象泄漏的一种方法,这样您的方法的调用者不必知道底层实现。
- 空的catch块并不意味着您已经处理了异常。这就是所谓的“吞咽”;至少,您要记录该异常。有时,发生异常实际上是代码逻辑流程的一部分,因此您可能需要做一些特殊的事情(但这是对双关语,而不是规则,请原谅。最好检查导致异常的情况而不是将它们合并到代码的逻辑流程中)。
您可以轻松地在代码中检查null值,因此无需显式捕获null指针异常。放任不管是没有道理的
NullPointerException(这是不好的做法)。即使您有一些代码引发
NullPointerException,并且您无法控制并且无法修复该代码,您也应该确定导致的输入参数,
NullPointerException并专门对其进行测试。
您不应该捕获的另一个例外是
IllegalArgumentException。此异常意味着您传入了没有意义的参数。代替捕获此异常,您应该显式测试输入参数,以确保它们是理智的并且不会引起
IllegalArgumentException。



