Parameter가 null이 들어온 경우 예외처리를 해줘야 되는 것은 개발자라면 누구나 아는 사실일 것이다.
하지만, 이러한 상황에서 parameter를 잘못 넘긴 경우이므로
IllegalArgumentException인가, null을 받아왔으니NullPointerException인가?
결론부터 말하자면, 내 생각엔 IllegalArgumentException으로 예외처리하는게 의도에 더 가깝지 않을까 생각한다.
Parameter에 null이 들어온 것이므로 Illegal(위법의) Argument(인자) Exception를 던져 처리하는 것이 맞다는 의견이 많음.Preconditions.class에 checkNotNull 메서드에서는 NullPointerException을 던지고 있음.
두 Exception의 명시된 Javadoc을 살펴보자

위의 내용을 해석해보자
부적절한 인수를 통과했음을 나타내기 위해 던집니다.
위의 내용을 해석해보자
인스턴스 메서드를 '호출'하는 경우필드에 '접근'하거나 '수정'하는 경우NullPointerException object는 virtual machine에 의해 억제가 비활성화 되거나 stack trace을 쓸 수 없는 경우에 발생할 수 있음.
Javadoc을 확인해도 무엇이 맞다고 정확히 말할 수 있는 사람은 없을 것 같다..
같이 프로그램을 작성하는 동료가 존재한다면 약속이 필요하다. 처리하는 방식을 일관성있게 통일시키면 고민 할 필요가 없어지지 않을까?
정답이 없는 논쟁이지만 나는 IllegalArgumentException으로 예외처리를 하여 일관성을 유지하며, 잘못된 인자(null)가 들어왔다는 것을 알려주는게 더 좋은 처리 방식인 것 같다.
구글 Guava에서는 NullPointerException으로 처리하도록 통일해서 저렇게 처리한게 아닐까? 라는 생각이 든다.