Java에서 NullPointerException이 발생하는 이유와 해결 방법
- 포로그래밍/Java
- 2025. 12. 14.
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 |
|---|