Objects.requireNonNull(T obj) 而不是 null check 和手动抛出 IllegalArgumentException?
每当我必须检查方法的给定参数是否不为空时,我都会编写一个空检查,并在空检查失败时抛出一个 IllegalArgumentException
:
if (user == null) {
throw new IllegalArgumentException("User can't be null.");
}
但是,通过阅读一些Java 8类(如ArrayList
)的源代码,我发现Oracle正在使用Objects.requireNonNull
来检查参数与空值,然后,如果测试失败,则会引发NullPointerException
。
这样,通过采用此方法,前面的代码片段应如下所示:
Objects.requireNonNull(user, "User can't be null.");
更小,更具可读性。
假设我控制了系统的整个异常处理(即使我不应该,有时处理这些未经检查的异常是业务的一部分),我是否应该用NullPointerException
替换我的TravilArgumentException
并使用Object.requireNonNull
而不是编写我自己的空检查和异常抛出?