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 之后的空指针异常信息,不但告诉了哪一行,还明确告诉了我们是哪个变量,如下图所示:
再也不怕空指针了,有木有!