✔ java.lang.NullPointerException
- 참조변수를 사용하면서 가장 많이 발생하는 예외중 하나 NullPointerException
- 참조 타입 변수가 null을 가지고 있을 경우 참조 타입 변수는 사용할 수 없음 (즉, 객체를 사용할 수 없음)
== null 값을 가질 경우 참조할 객체가 없으므로 사용할 수 없음 - null 값을 가지고 있는 참조 타입 변수를 사용할 경우 NullPointerException 발생
EX) 1) null 객체의 인스턴스 메서드를 호출
2) null 객체의 필드에 접근하거나 수정
3) null 인 배열의 length 필드를 사용
- 참조 타입 변수가 null을 가지고 있을 경우 참조 타입 변수는 사용할 수 없음 (즉, 객체를 사용할 수 없음)
void action() {
if(this.tool.equals("도끼")) {
System.out.println("나무배기");
}
else if(this.tool.equals("낚시하기")) {
System.out.println("낚시대");
}
else if(this.tool.equals("삽")) {
System.out.println("땅파기");
}
else if(this.tool.equals(null)) {
System.out.println("나무 흔들기");
}
else {
System.out.println("잘못 입력했습니다.");
}
}
🚨 Exception 발생 원인
- String 타입인 tool 이 null 일 경우 if(this.tool.equals("도끼")를 수행할 때 NullPointerException이 발생한다
🔍 Exception 해결방법
solution 01)
void action() {
if(this.tool == null) {
System.out.println("나무 흔들기");
}
else if(this.tool.equals("도끼")) {
System.out.println("나무배기");
}
else if(this.tool.equals("낚시하기")) {
System.out.println("낚시대");
}
else if(this.tool.equals("삽")) {
System.out.println("땅파기");
}
else {
System.out.println("잘못 입력했습니다.");
}
}
- NULL 체크 로직을 최상단에 위치하도록 코드 수정