Java에서 NullPointerException이 발생하는 이유와 해결 방법

Java를 처음 배우거나 실무에서 개발을 하다 보면 가장 자주 마주치는 오류 중 하나가 NullPointerException입니다. 이 오류는 Java 개발자라면 반드시 이해하고 넘어가야 하는 기본적인 예외입니다.

NullPointerException이란 무엇인가

NullPointerException은 객체가 null 상태인데 해당 객체의 메서드나 속성에 접근하려고 할 때 발생하는 예외입니다. Java는 객체 지향 언어이기 때문에 모든 객체는 생성 후 사용해야 하며, null 상태의 객체는 아무 동작도 수행할 수 없습니다.

NullPointerException이 발생하는 기본 원인

이 예외는 대부분 다음과 같은 상황에서 발생합니다.

  • 객체를 생성하지 않고 사용한 경우
  • 메서드의 반환값이 null인데 바로 사용한 경우
  • 컬렉션이나 배열에서 값이 없는데 접근한 경우
  • 외부 API 호출 결과가 null인 경우

이 중 하나라도 해당된다면 NullPointerException이 발생할 가능성이 높습니다.

 

객체를 생성하지 않고 사용하는 경우

객체 선언만 하고 실제로 생성하지 않은 상태에서 메서드를 호출하면 오류가 발생합니다.

 

User user = null;
user.getName();

 

user 객체는 null이기 때문에 getName 메서드를 호출할 수 없습니다.

 

 

메서드 반환값이 null인 경우

메서드가 항상 값을 반환한다고 가정하고 코드를 작성하면 문제가 발생합니다.

String result = getValue();
System.out.println(result.length());
 

getValue 메서드가 null을 반환하면 length 호출 시 예외가 발생합니다.

 

 

컬렉션에서 값이 없는 경우

Map이나 List를 사용할 때도 주의가 필요합니다.

Map<String, String> map = new HashMap<>();
String value = map.get("key");
value.length();

map에 key가 없으면 get 결과는 null이 됩니다.

 

 

NullPointerException을 방지하는 방법

이 예외를 예방하기 위해 다음과 같은 방법을 사용할 수 있습니다.

  • 객체 사용 전 null 여부 확인
  • 메서드 반환값에 대한 검증
  • Optional 클래스 활용
  • 기본값 처리 로직 추가

이 중 가장 기본적인 방법은 null 체크입니다.

null 체크를 사용하는 기본적인 방법

if(user != null){
    user.getName();
}

이 방식은 가장 단순하지만 실무에서 많이 사용됩니다.

 

Optional을 활용한 방식

Java 8 이후에는 Optional 클래스를 활용해 null 처리를 보다 안전하게 할 수 있습니다.

Optional<User> userOpt = Optional.ofNullable(user);
userOpt.ifPresent(u -> u.getName());

Optional은 null을 직접 다루지 않도록 유도하는 구조입니다.

 

실무에서 NullPointerException이 자주 발생하는 위치

다음과 같은 영역에서 특히 자주 발생합니다.

  • Controller에서 요청 파라미터 처리 시
  • Service 계층에서 외부 데이터 처리 시
  • DB 조회 결과를 바로 사용하는 경우
  • JSON 파싱 결과를 바로 사용하는 경우

이 지점에서는 항상 null 가능성을 염두에 두어야 합니다.

NullPointerException을 디버깅하는 방법

예외가 발생하면 스택 트레이스를 먼저 확인해야 합니다. 예외 메시지에 표시된 라인 번호를 기준으로 null이 될 수 있는 객체를 하나씩 점검하는 것이 가장 빠른 해결 방법입니다.

'포로그래밍 > Java' 카테고리의 다른 글

Java에서 JSON 처리하는 방법  (0) 2025.12.06

댓글

Designed by JB FACTORY