想象一下使用一堆库包含数千个文件的代码。想象所有的代码都是这样编码的。
想象一下,例如,服务器更新导致一个配置文件消失;现在,当您尝试使用该类时,所拥有的只是一个堆栈跟踪就是一个空指针异常:如何解决呢?可能要花费几个小时,至少要记录未找到的文件的原始堆栈跟踪[文件路径]才能使您立即解决。
甚至更糟糕的是:在更新之后使您使用的库中的一个失败,导致以后的代码崩溃。您如何将其追溯到图书馆?
即使没有强大的错误处理功能
throw new IllegalStateException("THIS SHOULD NOT HAPPENING")
要么
LOGGER.error("[method name]/[arguments] should not be there")
可以节省您的时间。
但是在某些情况下,您可能真的想忽略该异常并像这样返回null(或不执行任何操作)。特别是如果您与一些设计不良的旧代码集成在一起,并且通常情况下会出现此异常。
实际上,当您执行此操作时,您应该只想知道您是否真的是在忽略该异常或根据需要“适当处理”。如果在给定的情况下返回null将“正确处理”您的异常,请执行此操作。并添加一条评论为什么这是正确的选择。
最佳实践是大多数情况下可以遵循的事情,可能是80%,也许是99%,但是您总是会发现其中一种不适用的情况。在这种情况下,请留下评论,为什么您不遵循几个月后将阅读您的代码的其他人(甚至您自己)的做法。