NullPointerException — 객체가 필요한 곳에 null이 들어왔을 때

NullPointerException — 객체가 필요한 곳에 null이 들어왔을 때

NullPointerException은 애플리케이션이 객체가 필요한 자리에서 null을 사용하려 할 때 던져지는 예외예요. 자바 개발자라면 누구나 한 번쯤 만나는 대표적인 런타임 예외죠.

출처: Java API Reference

본문

이 예외가 발생하는 전형적인 상황은 다음과 같아요.

  • null 객체의 인스턴스 메서드를 호출할 때
  • null 객체의 필드에 접근하거나 수정할 때
  • null을 배열인 것처럼 length를 가져올 때
  • null을 배열인 것처럼 슬롯에 접근하거나 수정할 때
  • null을 Throwable 값인 것처럼 던질 때

애플리케이션은 null 객체의 다른 불법적인 사용을 나타내기 위해 이 클래스의 인스턴스를 직접 던질 수도 있어요.

상속 구조는 다음과 같아요.

java.lang.Object
  java.lang.Throwable
    java.lang.Exception
      java.lang.RuntimeException
        java.lang.NullPointerException

생성자

  • NullPointerException() — 상세 메시지 없이 생성해요.
  • NullPointerException(String s) — 지정된 상세 메시지로 생성해요.

메서드

  • String getMessage() — 이 throwable의 상세 메시지 문자열을 반환해요. 생성자에 null이 아닌 메시지를 넘겼으면 그 값을, 아니면 구현별 메시지나 null을 반환해요. NullPointerException은 명시적 메시지 없이 만들어지면 null 참조의 자세한 설명을 담은 메시지를 만들어 주는데, 역직렬화(deserialization)된 인스턴스에서는 그 내부 정보가 없어 생략돼요.

더 알아보기 (Learn more)