Java/자바 정리

92. 예외 처리의 시작 – NullPointerException은 왜 터질까?

코딩하는냥이 2025. 5. 13. 10:16
반응형

이번 글에는 예외(Exception)의 개념을 처음 접하며,

가장 흔하게 발생하는 예외 중 하나인 NullPointerException을 직접 경험해봅니다.
문자열의 길이를 출력하는 간단한 메서드를 만들고,

그 안에서 null 값을 전달했을 때 어떤 일이 일어나는지 확인해보겠습니다.


📌 예제 코드

public class ExceptionHandlingExample1 {
    public static void printLength(String data) {
        int re = data.length();
        System.out.println("문자 수 : " + re);
    }

    public static void main(String[] args) {
        System.out.println("[프로그램 시작\n");
        printLength("ThisIsJava");
        printLength(null);
        System.out.println("[프로그램 종료");
    }
}

💻 실행 결과

[프로그램 시작

문자 수 : 10
Exception in thread "main" java.lang.NullPointerException: Cannot invoke "String.length()" because "data" is null
	at ch11.sec02.exam01.ExceptionHandlingExample1.printLength(ExceptionHandlingExample1.java:5)
	at ch11.sec02.exam01.ExceptionHandlingExample1.main(ExceptionHandlingExample1.java:11)

💬 코드 설명

  • printLength(String data)는 전달된 문자열의 길이를 출력합니다.
  • "ThisIsJava"는 길이가 10이므로 정상적으로 출력됩니다.
  • 하지만 null이 전달되면 data.length()를 호출하는 순간 NullPointerException이 발생합니다.
  • 이로 인해 프로그램은 중단되고, printLength(null); 이후의 코드는 실행되지 않습니다.
  • 콘솔에는 예외가 발생한 라인 번호와 함께 스택 트레이스가 출력됩니다.

💡 포인트 정리

  • null을 참조하여 메서드나 필드에 접근하면 NullPointerException이 발생합니다.
  • 자바는 런타임 중 예외가 발생하면 프로그램을 즉시 종료하기 때문에, 적절한 예외 처리가 필요합니다.
  • 이 예제는 예외 처리 전의 상태를 보여주며, 다음 강의에서 이를 try-catch문으로 처리하는 방법을 배울 예정입니다.

📌 정리하자면, 예외(Exception)는 프로그램 실행 중 정상적이지 않은 상황이 발생했을 때 나타나는 문제입니다.
그중 NullPointerException은 가장 흔하며, 참조 변수에 null이 들어있는 경우 조심해야 합니다.