1. 정의

    1. java.lang.IllegalArgumentException

    2. 메서드에 잘못된(부적절한) 인자가 전달됐을 때 발생시키는 런타미 예외

    3. 체크 예외가 아니라 런타임 예외 → 선언 없이 throw 가능

      public class IllegalArgumentException extends RuntimeException {
      	public IllegalArgumentException(){super();}
      	public IllegalArgumentException(String message) {super(message);}
      
      }
      
  2. 언제 사용하는 가

    1. 메서드가 요구하는 유효한 조건을 위반한 인자가 들어왔을 때

    2. 예시

      public void setAge(int age){
      	if(age < 0){throw new IllegalArgmentException("Age must be non-negative");}
      this.age = age;
      
      }
      
      
    3. 특징

      1. 런타임 예외
        1. 호출한 쪽에서 강제로 try-catch 하지 않아도 됨
      2. 메서드 잘못된 사용을 알려줌
        1. 잘못된 인자를 바로 잡을 수 있음
      3. 검증용으로 자주 사용
        1. null, 음수 범위 벗어난 값 등 검증 시 적합
    4. 예제: 문자열 검증

      public void setNickname(String nickname){
      	if(nickname == null || nickname.isEmpty()){
      		throw new IllegalArgumentException("nickname cannot be null or empty");
      	}
      	this.nickname = nickname;
      }
      
    5. nickname이 null이거나 빈 문자열이면 예외 발생

    6. 호출한 쪽에서 값이 잘못되었음을 바로 알수 있음