본문 바로가기
Web

[Java] 생성자와 NullPointerException

by DuncanKim 2022. 7. 11.
728x90

[Java] 생성자와 NullPointerException

생성자를 공부하다가 NullPointerException을 만났다. 초보 개발자들은 누구나 이 예외문을 만나보았을 것이다.

그렇다면, 이 예외를 어떻게 해야 만나지 않을 수 있을까. 어떤 부분을 신경써서 보아야 하는 것일까?

 

 

1. NullPointerException의 정의

 

실제 값이 아닌 null을 가지고 있는 객체 또는 변수를 호출할 때 발생하는 런타임 오류이다. null 값을 가지고 있는 것을 가지고 toString을 한다 던지, 어떤 객체 안에 있는 null 값을 가지고 있는 변수를 호출한다던지 할 때 발생한다.

 

String data = null;
System.out.println(data.toString());

// ~~~~(NullPointerExceptionExample.java.2) 와 같은 예외문을 만날 수 있다.

 

몇 번 째 줄에서 오류가 발생했는 지에 대한 정보가 들어있기 때문에, 오류 명과 위치를 파악해보면 왜 Null이 들어갔는지, 어떤 값을 연결해줘야 하는 지를 쉽게 알 수 있다.

 

 

2. 예외 처리 방법

 

1) try - catch를 사용한다.

public class Main {
	public static void main(String[] arg) {
            String s = null; 
            try{ 
                System.out.println(getLength(s)); 
            } catch(IllegalArgumentException e) { 
                System.out.println("IllegalArgumentException caught"); // 예외처리 발생!!
            } 
   	}
        public static int getLength(String s) { 
            if (s == null) {
                 throw new IllegalArgumentException("The argument cannot be null");
            }
            return s.length(); 
        } 
}// end class

 

2) 문자열 사용

 

반복적인 if문 사용을 통해 문자열이 null인지를 확인하면서 프로그램을 실행하는 방법

public String getCityOfMemberFromOrder(Order order) {
	if (order != null) {
		Member member = order.getMember();
		if (member != null) {
			Address address = member.getAddress();
			if (address != null) {
				String city = address.getCity();
				if (city != null) {
					return city;
				}
			}
		}
	}
	return "Seoul"; // default
}

 

3) Optional 사용(java 8)

 

이 부분은 다른 포스팅에서 진행해볼 생각이다.

728x90

댓글