一个NullPointerException异常 是由JVM抛出一个运行时异常时,我们的应用程序代码中,引用的其他API或中间件遇到下列条件
尝试调用空对象的实例方法。
尝试访问或修改空对象的特定字段。
尝试获取空对象的长度作为数组。
查看java.lang.NullPointerException堆栈跟踪,并确定异常的触发位置(应用程序代码,第三方API,中间件软件并提取行)。
如果问题出在应用程序代码上,那么将需要代码遍历。如果是从第三方API或中间件中发现问题,则需要首先查看引用的代码并确定它是否可能间接地是问题的根源,例如,将空值传递给第三方API方法等。
如果在应用程序代码中发现问题,则尝试确定哪个Object实例为null并导致问题。我们需要修改代码以添加适当的null检查验证和适当的日志记录,以便我们也可以理解null值的来源。
public class NPEDemo {
private String field1 = null;
private String field2 = null;
public String getField1() {
return field1;
}
private void setField1(String field1) {
this.field1 = field1;
}
public String getField2() {
return field2;
}
private void setField2(String field2) {
this.field2 = field2;
}
public static void main(String[] args) {
try {
NPEDemo npe = new NPEDemo();
npe.setField1("field1 value");
npe = null;
npe.setField2("field2 Value");
} catch (Throwable e) {
System.out.println("Java Error is: "+e );
e.printStackTrace();
}
}
}输出结果
Java Error is: java.lang.NullPointerException java.lang.NullPointerException at NPEDemo.main(NPEDemo.java:24)