Một NullPointerException là runtime exception được ném bởi JVM khi application code, other referenced API hoặc middleware gặp các điều kiện sau
- Cố gọi instance method của null object.
- Cố truy cập hoặc sửa đổi field cụ thể của null object.
- Cố lấy length của null object như array.
Các bước giải quyết NullPointerException:
- Xem java.lang.NullPointerException stack trace và xác định nơi Exception được trigger (Application code, third-party API, middleware software và trích xuất line).
- Nếu vấn đề ở application code thì cần code walk-through. Nếu vấn đề từ third-party API hoặc middleware, cần review referenced code trước và xác định xem nó có thể indirect là nguồn gốc của vấn đề, ví dụ truyền null value cho third party API method, v.v.
- Nếu tìm thấy vấn đề trong application code, cố xác định Object instance nào là null và gây vấn đề. Cần sửa code để thêm proper null check validations và proper logging để hiểu nguồn gốc của null value.
Ví dụ
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();
}
}
}Kết quả
Java Error is: java.lang.NullPointerException java.lang.NullPointerException at NPEDemo.main(NPEDemo.java:24)