NullPointerException 애플리케이션 코드, 다른 참조 API 또는 미들웨어가 다음 조건을 만날 때 JVM에서 발생하는 런타임 예외입니다.
- null 개체의 인스턴스 메서드를 호출하려고 합니다.
- null 개체의 특정 필드에 액세스하거나 수정하려고 합니다.
- null 개체의 길이를 배열로 얻으려고 합니다.
NullPointerException 해결 단계:
- java.lang.NullPointerException 검토 스택 추적 및 예외가 트리거된 위치를 확인합니다(애플리케이션 코드, 타사 API, 미들웨어 소프트웨어 및 라인 추출).
- 애플리케이션 코드에 문제가 있는 경우 코드 검토가 필요합니다. 타사 API 또는 미들웨어에서 문제가 발견된 경우 먼저 참조된 코드를 검토하고 문제의 원인이 간접적일 수 있는지 확인해야 합니다(예:타사 API 메서드에 null 값 전달 등).리>
- 응용 프로그램 코드 내에서 문제가 발견되면 어떤 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)