专栏目录

三、Java 9 ~ 17 新特性试读

Java 14 新特性:更具体的空指针异常提示

友情提示

推荐您使用 Chrome 浏览器来阅读本实战专栏,其他浏览器可能存在兼容性问题。

空指针一直是 Javaer 遭遇评率最高的一个异常。在 Java 14 之前,一旦发生了空指针,异常信息中是无法明确的提示出,是哪个变量报了空指针,只能靠上下文猜。而在 Java 14 之后,异常信息中能够明确提示你,是哪个变量报了空指针。

1. 空指针示例代码

接下来,我们将通过一段示例代码,来演示一下版本之间,空指针异常信息的区别。首先,定义一个内部类 Person , 代码如下:

public class Main {

    // 内部类
    private static class Person {
        private String name;

        public Person(String name) {
            this.name = name;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        @Override
        public String toString() {
            return "Person{" +
                    "name='" + name + '\'' +
                    '}';
        }
    }

	// 省略...

}

然后,主动制造一个空指针异常,代码如下:

public class Main {

    // 内部类
	// 省略...

    public static void main(String[] args) {
    	// 定义一个 List 集合
        List<Person> persons = new ArrayList<>();

		// 定义两个 Person 对象, person2 定义为空,为了模拟空指针异常
        Person person1 = new Person("犬小哈");
        Person person2 = null;

		// 添加对象
        persons.add(person1);
        persons.add(person2);

		// 打印集合中第二个对象的 name 属性值
        System.out.println(persons.get(1).name);
    }

}

2. Java 14 之前的空指针异常提示

运行代码,可以看到,Java 14 之前,异常信息中只是告诉我们哪行报了空指针,但是,需要自行判断是哪个变量导致的,是 persons 变量呢,还是 persons.get(1) 呢?

3. Java 14 之后的空指针异常提示

在来看看 Java 14 之后的空指针异常信息,不但告诉了哪一行,还明确告诉了我们是哪个变量,如下图所示:

再也不怕空指针了,有木有!

最后编辑于 2024-04-28 23:17:10