浅谈Java异常处理之空指针异常
Java是一门强类型语言,也就是说变量的类型在声明过后就不能再改变,因此在编程中,经常会遇到空指针异常(NullPointerException)。本文将会对空指针异常进行详细的讲解。
空指针异常的定义
当程序试图访问一个空对象时,就会抛出空指针异常。空对象的意思是没有实例化的对象或者是一个null对象。
空指针异常的出现原因
1. 对象未初始化
当使用一个未初始化的对象时,就会引发空指针异常。例如:
String str;
System.out.println(str.length()); // 抛出空指针异常
2. 对象赋值为null
当一个对象赋值为null时,就不再指向任何有效的对象,如果调用该对象的方法或属性,就会引发空指针异常。例如:
String str = null;
System.out.println(str.length()); // 抛出空指针异常
3.方法返回null
当一个方法返回null时,如果直接调用该方法返回值的方法或属性,就会引发空指针异常。例如:
public String getName() {
return null;
}
String name = getName();
System.out.println(name.length()); // 抛出空指针异常
空指针异常的处理
1. 判断null
在使用一个对象之前,应该先判断对象是否为null,如果为null就不进行任何操作。例如:
String str = null;
if(str != null) {
System.out.println(str.length());
}
2. 使用try...catch语句处理异常
可以使用try...catch语句来处理空指针异常。例如:
String str = null;
try {
System.out.println(str.length()); // 抛出空指针异常
} catch(NullPointerException e) {
System.out.println("出现了空指针异常");
}
3. 使用Java8的Optional类
Java8中新增了Optional类,可以避免空指针异常。例如:
Optional<String> optionalStr = Optional.ofNullable(null);
if(optionalStr.isPresent()) {
System.out.println(optionalStr.get().length());
}
示例说明
示例一
医院管理系统中,对于一个病人(Patient)有一个关联的医生(Doctor),当要对病人的医生进行操作时,要先判断该病人是否有医生关联。如果该病人有医生关联,则进行操作,否则不进行任何操作。
public class Patient {
private Doctor doctor;
public Doctor getDoctor() {
return doctor;
}
public void setDoctor(Doctor doctor) {
this.doctor = doctor;
}
}
Patient patient = new Patient();
if(patient.getDoctor() != null) {
// 进行医生相关操作
}
示例二
在输出一组学生的成绩时,有些学生并没有成绩(也就是说,该学生没有参加考试),此时的成绩可视为空。在输出成绩时,要先判断学生是否有成绩,如果有成绩则输出成绩,否则输出“无”。
List<Double> scores = new ArrayList<>();
scores.add(85.5);
scores.add(null);
scores.add(90.0);
for(Double score : scores) {
if(score != null) {
System.out.println(score);
} else {
System.out.println("无");
}
}
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:浅谈java异常处理之空指针异常 - Python技术站