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
'Web' 카테고리의 다른 글
[Java] Random 함수의 작동원리 (0) | 2022.07.15 |
---|---|
[Java] 접근제한자(public, default, protected, private) (0) | 2022.07.14 |
[Java] static 활용 (0) | 2022.07.10 |
[Web] 웹의 진화과정(SSR, CSR, SSG, JAM Stack) (0) | 2022.07.08 |
[Web] 웹 서버 : apache, NginX, Tomcat (0) | 2022.07.07 |
댓글