我从不抛出 NullPointerException
。对我来说,当出现问题时,它自然会出现在代码中,并且需要开发人员查看会发生什么。然后,他修复了原因,并且不再发生。
我使用 IllegalStateException
来表示对象配置错误或调用顺序不正确。但是,我们都知道,理想情况下,对象应确保它不会处于不良状态,并且您不能以不正确的顺序调用它(制造一个生成器和一个生成的对象…)。
当一个方法检测到其参数不正确时,我会使用很多 IllegalArgumentException
。这是任何公共方法的责任,即停止处理(以避免更难理解的间接错误)。同样,
if方法开头的几个s用于文档目的(文档永远不会偏离代码,因为它是代码:-))。
public void myMethod(String message, Long id) { if (message == null) { throw new IllegalArgumentException("myMethod's message can't be null"); // The message doesn't log the argument because we know its value, it is null. } if (id == null) { throw new IllegalArgumentException("myMethod's id can't be null"); // This case is separated from the previous one for two reasons : // 1. to output a precise message // 2. to document clearly in the pre the requirements } if (message.length()<12) { throw new IllegalArgumentException("myMethod's message is too small, was '" + message + "'"); // here, we need to output the message itself,// because it is a useful debug information. } }
我还使用 特定的运行时异常 来表示更高级别的异常情况。
例如,如果我的应用程序的模块无法启动,则当另一个模块调用它时,可能会引发 ModuleNotOperationalException
(理想情况下是由诸如拦截器之类的通用代码,否则由特定代码引起)。在做出架构决定之后,每个模块都必须处理调用其他模块的 *** 作上的此异常。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)