본문 바로가기
카테고리 없음

Java NullPointerException 에러의 10가지 주요 상황과 해결 방법

by daily_coming 2024. 9. 19.
반응형

 

 

1. 객체가 초기화되지 않은 경우

객체를 생성하지 않고 해당 객체의 메서드나 변수를 호출하려 할 때 발생하는 에러입니다.

            String str = null;
            System.out.println(str.length()); // NullPointerException 발생
        

해결 방법: 객체가 null인지 확인하거나 객체를 초기화해야 합니다.

 

 

 

 

2. 배열이 초기화되지 않은 경우

배열을 초기화하지 않고 요소에 접근하려 할 때 발생하는 에러입니다.

            int[] arr = null;
            System.out.println(arr.length); // NullPointerException 발생
        

해결 방법: 배열을 초기화한 후에 요소에 접근해야 합니다.

 

 

 

 

3. 컬렉션 요소가 null일 때

컬렉션에 저장된 객체가 null인 경우 해당 요소를 접근할 때 발생할 수 있습니다.

            List list = Arrays.asList(null, "Hello");
            System.out.println(list.get(0).length()); // NullPointerException 발생
        

해결 방법: 컬렉션에서 null 여부를 먼저 체크해야 합니다.

 

 

 

 

4. 메서드 반환값이 null인 경우

메서드가 null을 반환했음에도 이를 확인하지 않고 바로 사용하는 경우 발생할 수 있습니다.

            public String getString() {
                return null;
            }
            System.out.println(getString().length()); // NullPointerException 발생
        

해결 방법: 메서드 반환값을 사용할 때 null인지 확인합니다.

 

 

 

 

5. 클래스의 정적 변수에 접근할 때

정적 변수가 null일 때 해당 변수에 접근하려 하면 발생합니다.

            static String staticVar = null;
            System.out.println(staticVar.length()); // NullPointerException 발생
        

해결 방법: 정적 변수가 null인지 확인 후 접근합니다.

 

 

 

 

6. Optional 객체 사용하지 않을 때

Java 8에서는 Optional을 사용해 null을 처리할 수 있습니다. 이를 사용하지 않고 null을 처리하지 않으면 에러가 발생할 수 있습니다.

            Optional opt = Optional.ofNullable(null);
            System.out.println(opt.get()); // NoSuchElementException 발생 가능
        

해결 방법: Optional을 올바르게 사용하여 null을 처리합니다.

 

 

 

 

7. synchronized 블록에서 null 객체에 접근할 때

null 객체를 synchronized 블록에서 사용하려 할 때 발생할 수 있습니다.

            Object lock = null;
            synchronized(lock) {
                // NullPointerException 발생
            }
        

해결 방법: synchronized 블록 내에서 사용할 객체가 null이 아닌지 확인합니다.

 

 

 

 

8. String 메서드 호출 시 null 문자열 처리

문자열이 null인 상태에서 해당 문자열에 메서드를 호출하려 할 때 발생할 수 있습니다.

            String str = null;
            System.out.println(str.toUpperCase()); // NullPointerException 발생
        

해결 방법: 문자열이 null인지 체크한 후 메서드를 호출합니다.

 

 

 

 

9. 생성자에서 초기화되지 않은 객체

생성자에서 객체를 초기화하지 않은 경우, 이후 해당 객체를 사용할 때 NullPointerException이 발생할 수 있습니다.

            public class Test {
                String str;
                public Test() {
                    // str 초기화 생략
                }
            }
            Test test = new Test();
            System.out.println(test.str.length()); // NullPointerException 발생
        

해결 방법: 생성자에서 필요한 객체를 반드시 초기화합니다.

 

 

 

 

10. 외부 API 호출 시 반환값이 null인 경우

외부 API나 라이브러리 호출 시 null이 반환될 수 있는 값을 처리하지 않으면 NullPointerException이 발생할 수 있습니다.

            String apiResult = externalApiCall();
            System.out.println(apiResult.length()); // NullPointerException 발생 가능
        

해결 방법: 외부 API 호출 후 반환값이 null인지 확인해야 합니다.

NullPointerException을 예방하려면 객체나 변수의 null 상태를 확인하는 것이 중요합니다. 이를 통해 예기치 않은 오류를 방지하고 안정적인 프로그램을 작성할 수 있습니다.

 

 

반응형