예외를 마주쳤을 때, 그 예외가 언제 발생하는 예외인지
100%까진 아니더라도, 일부 이해하게 되면 같은 예외를 마주했을 때
내가 보아야할 코드의 양이 달라지지 않을까.
그래서 처음으로 알아볼 예외는 바로 NullPointerException.
한 가지 차이를 메모해두기 위해 작성한다.
class User {
public int grade;
}
class School {
public User user;
}
public void method() {
School school = new School();
school.user /* null, 객체를 생성한 school의 참조값에 접근한 후,
school의 user 변수 값만 추적하므로 예외가 발생하지 않는다. */
school.user.grade /* NullPointerException,
null 메모리 주소에 접근하여 내부의 변수인 grade에 접근하므로 예외가 밠생한다. */
null 값 자체를 조회하는 것에는 문제가 없다.
하지만 null 속으로 파고들려고 하면, NullPointerException이 발생한다.
이 예외가 발생하면, 내가 null을 가지고 뭔가를 해보려고 하는건 아닌지,
객체 접근을 중심으로 살펴보면 되겠다.