java – Objects.requireNonNull(T obj)而不是null检查并手动抛出IllegalArgumentException?

前端之家收集整理的这篇文章主要介绍了java – Objects.requireNonNull(T obj)而不是null检查并手动抛出IllegalArgumentException?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
每当我检查一个方法的给定参数是否不为null时,如果null检查失败,我用来写一个空检查并抛出一个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替换我的IllegalArgumentExceptions并使用Objects.requireNonNull而不是写我自己的null检查和异常抛出?

解决方法

使用Objects.requireNonNull(c)是一种非常优雅的方式来检查元素是否不为空.但是有一个有趣的讨论是关于选择NullPointerException还是IllegalArgumentException – >因此抛出NullPointerException是表示引用为空的java方式.

否则,您可以使用自己的方法requireNotNull().很简单 :

public static <T> T requireNonNull(T obj) {
        if (obj == null)
            throw new NullPointerException();
        return obj;
    }

并且您可以通过IllegalArgumentException更改异常NullPointerException.

猜你在找的Java相关文章