实例变量为null时抛出的异常

Jak*_*lat 1 java nullpointerexception

我正在使用PMD规则列表制作代码库投诉.这些包括你不允许扔或抓NullPointerException.我发现这个方法需要2个实例变量才能运行非空.它抛出一个NullPointerException否则:

public String build() {
if (apiKey == null || url == null) {
    throw new NullPointerException(
            "Cannot build: API key and URL must be set");
}
Run Code Online (Sandbox Code Playgroud)

应该扔什么呢?在我看来,这NullPointerException将是一个麻烦的召唤.想到的唯一另一件事是IllegalArgumentException,但这些并不是真正的争论,所以我认为它不适合.

Jon*_*eet 7

IllegalStateException 这似乎完全合适:

表示在非法或不适当的时间调用了方法.

那说得合理清楚,不是吗?


Tim*_*m B 6

IllegalStateException 想起来.

这里要考虑的一件事是这应该是一个检查或未检查的异常.如果可以有效地处理与通用的不同,您也可以考虑为此案例制定自己的显式异常IllegalStateException.