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.

相关文章

ArrayList简介:ArrayList 的底层是数组队列,相当于动态数组。与 Java 中的数组相比,它的容量能动态增...
一、进程与线程 进程:是代码在数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位。 线程...
本文为博客园作者所写:&#160;一寸HUI,个人博客地址:https://www.cnblogs.com/zsql/ 简单的一个类...
#############java面向对象详解#############1、面向对象基本概念2、类与对象3、类和对象的定义格式4、...
一、什么是异常? 异常就是有异于常态,和正常情况不一样,有错误出错。在java中,阻止当前方法或作用域...
Collection接口 Collection接口 Collection接口 Collection是最基本的集合接口,一个Collection代表一组...