Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

Java에서 NullPointerException을 해결하는 방법은 무엇입니까?

<시간/>

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)