当我有一个潜在的空输入时......最好总是检查它:
public void doSomething(String str) {
if (str == null)
throw new NullPointerException();
processData(str);
}
或传递无效数据,并等待“processData()”抛出nullPointerException:
public void doSomething(String str) {
processData(str);
}
答案 0 :(得分:6)
这是固执己见的,但是最好把它放在第一层:
如果你有一个stracktrace并在库实现中看到一个NPE(内心深处),那么不清楚它是由库中的错误还是由你的非法论证造成的。
出于同样的原因,我建议使用描述性IllegalArgumentException
代替NPE:
if (str == null)
throw new IllegalArgumentException("str is null");
(并给str
一个更好的名字。)