인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

인프런님의 프로필 이미지
인프런

작성한 질문수

이펙티브 자바 완벽 공략 1부

아이템 2. 완벽 공략 9 - IllegalArgumentException

IllegalArgumentException 에 대해

작성

·

1.3K

5

안녕하세요 기선님
제가 프로젝트를 하면서 해당 IllegalArgumentException, IllegalStateException 적절한 사용 범위에 대해서 의문을 가졌던 적이 있는데요.
 
기선님이 언급하셨듯 validation check 와
추가적으로 서비스로 전이되는 값이 기대하는 값이 아니여도 IllegalArgumentException 을 띄워도 되는건지 궁금합니다.
 
예를 들어
회원가입 컨트롤러에 signUpDto 를 통해 회원 정보를 받고 해당 Dto를 SignUpService의 인자로 넘겨 처리합니다.
그때 service가 이미 등록된 회원이라면 IllegalArgumentException 던져야 할지 IllegalStateException 을 던져야 할지 궁금합니다.
 
어떻게 보면 넘겨받은 인자로 처리할 수 없기 때문에 ArgException도 맞는 것 같고 해당 state를 처리할 수 없기 때문에 StateException도 맞는것 같아서 질문합니다.

답변 1

12

백기선님의 프로필 이미지
백기선
지식공유자

굳이 둘 중에 선택해야 한다면 저는 IllegalArgumentException이 더 어울리는것 같기도 하네요. 넘겨받은 매개변수가 잘못된 값을 가지고 있어서 발생한 문제니까요. IllegalStateException은 해당 메서드가 부적절한 시기에 호출됐다는 것인데, 회원 가입 처리하는 과정이 호출된 상황은 분명 적절한 시기였을테지만 그 안에 들어있던 데이터의 문제니까.. 저라면 IAE를 선택하겠습니다.

인프런님의 프로필 이미지
인프런

작성한 질문수

질문하기