Spring

NullPointerException이란 무엇이며, 어떻게 해결할 수 있나?

Albosa2lol 2025. 2. 12. 15:21

NullPointerException(NPE)란?

NullPointerException(NPE)은 Java에서 null인 객체를 사용하려 할 때 발생하는 런타임 예외임.


NPE가 발생하는 경우

  1. null 객체의 메서드를 호출할 때

     String str = null;
     int length = str.length(); // NPE 발생
    
  2. null 객체의 필드에 접근할 때

     class Example { String text; }
     Example ex = null;
     System.out.println(ex.text); // NPE 발생
    
  3. null인 배열 요소를 사용할 때

     String[] array = new String[5];
     array[0].length(); // NPE 발생
    
  4. null이 포함된 리스트나 맵을 사용할 때

     List<String> list = new ArrayList<>();
     list.add(null);
     System.out.println(list.get(0).length()); // NPE 발생
    

NPE를 방지하는 방법

  1. null 여부를 먼저 확인하기

     if (str != null) {
         System.out.println(str.length());
     }
    
  2. Optional 사용하기 (Java 8 이상)

     Optional<String> optionalStr = Optional.ofNullable(str);
     System.out.println(optionalStr.orElse("기본값").length());
    
  3. Objects.requireNonNull() 사용하기

     String safeStr = Objects.requireNonNull(str, "문자열이 null이면 안 됨!");
    
  4. @NotNull 어노테이션 사용하기

     public void setName(@NotNull String name) {
         this.name = name;
     }
    

결론

NullPointerException은 흔한 오류지만, null 체크를 철저히 하거나 Optional을 사용하면 방지할 수 있음.