如何抛出空指针异常和where

use*_*212 3 java exception-handling

当我有一个潜在的空输入时...总是检查它是否更好:

public void doSomething(String str) {

    if (str == null)
        throw new NullPointerException();


    processData(str);
}
Run Code Online (Sandbox Code Playgroud)

或传递无效数据,并等待"processData()"抛出nullPointerException:

public void doSomething(String str) {       

    processData(str);
}
Run Code Online (Sandbox Code Playgroud)

wer*_*ero 6

这是固执己见,但是最好把它放在第一层:

如果你有一个stracktrace并在库实现中看到NPE(内心深处),则不清楚它是由库中的错误还是由你的非法参数引起的.

出于同样的原因,我建议使用描述性IllegalArgumentException而不是NPE:

if (str == null)
    throw new IllegalArgumentException("str is null");
Run Code Online (Sandbox Code Playgroud)

(并给出str一个更好的名字).