[Java] 자바 NullPointerException과 처리방법 알아보기!

2020-12-31


오늘은 자바의 예외 중에 모든 개발자들이 가장 두려워하는 NullPointerException에 대하여 알아보도록 하자. 해당 예외가 발생하는 경우는 실제 값이 아닌 null(아무것도 아닌 값)을 가지고 있는 객체 / 변수 등을 호출할 경우 발생하게 되는데, 구체적으로 예를 들어 살펴보도록 하자.


package eException;

public class main {

	public static void main(String[] args) {
		
		String str = null;
		System.out.println(str.toString());
		//str은 null값을 가지고 있어 String 객체가 아니기 때문에 해당 코드 실행시 NullPointerException 이 발생한다.
        	
   }
}

위의 코드와 같이 String 변수에 null 대입하고 toString으로 해당 문자열 정보를 출력하는 코드를 작성 후 실행해보면, 아래와 같이 NullPointerException 이 발생하는 것을 확인할 수 있다.

앞서 말했듯이 해당 값 str 변수는 null의 값을 가지고 있어 해당 오류가 발생하게 되는데, 그러면 위와 같은 예외가 발생하는 것을 어떻게 처리할 수 있을까? 바로 try / catch 구문을 사용하는 방법이 있다. 사용법은 어렵지 않으며, 구체적 코드 순서는 아래와 같다.

[ try {예외가 발생할 수도 있는 코드를 작성 } catch( 발생이 예상되는 예외 , 예외변수(보통 e를 사용){ 예외 발생 실행 코드} ]


실제 NullPointerException 예외처리는 아래와 같은 방식으로 이루어진다.

package eException;

public class main {

	public static void main(String[] args){

		try {
			String str = null;
			System.out.println(str.toString());
		}catch (NullPointerException e) {
			System.out.println("--NullPointerException 발생--");
			System.out.println("기존 코드를 체크해 주세요!!");
		}finally {
			System.out.println("예외처리 코드가 오류없이 진행되었습니다.");
		}
        
    }
}

기존에 NullPointerException 이 발생하는 코드를 try로 감싸 주고 이후 catch 문을 통해 예외 발생 시 동작하는 코드를 작성해주었다. 다음에 보이는 finally은 옵션 코드인데, (생략이 가능한 코드) try 구문이 정상처리되거나 예외가 발생하는 두 경우중 어떠한 경우가 발생하더라도 정상적으로 처리가 되면 실행되는 코드이며, 예외처리 확인차 넣어주었다.