Java/Exception

[Exception] java.lang.NullPointerException

콩스프 2022. 11. 26. 23:51

✔ java.lang.NullPointerException

  • 참조변수를 사용하면서 가장 많이 발생하는 예외중 하나 NullPointerException
    • 참조 타입 변수가 null을 가지고 있을 경우 참조 타입 변수는 사용할 수 없음 (즉, 객체를 사용할 수 없음)
      == null 값을 가질 경우 참조할 객체가 없으므로 사용할 수 없음

    • null 값을 가지고 있는 참조 타입 변수를 사용할 경우 NullPointerException 발생
      EX)  1) null 객체의 인스턴스 메서드를 호출
               2) null 객체의 필드에 접근하거나 수정
               3) null 인 배열의 length 필드를 사용


 

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 체크 로직을 최상단에 위치하도록 코드 수정