IllegalArgumentException — 부적절한 인자가 전달됐을 때

IllegalArgumentException — 부적절한 인자가 전달됐을 때

IllegalArgumentException은 메서드에 부적절하거나(illegal) 어울리지 않는(inappropriate) 인자가 전달됐을 때 던져지는 예외예요. 자바에서 가장 흔하게 만나는 런타임 예외 중 하나로, "이 메서드가 기대하는 값의 범위나 형식과 맞지 않는 게 들어왔다"는 신호예요.

출처: Java API Reference

본문

예를 들어 음수가 되면 안 되는 값에 음수를 넣거나, null이 허용되지 않는 곳에 null을 전달했을 때 이 예외를 던지는 게 일반적이에요. 여러 라이브러리가 인자 검증 실패를 이 예외로 표현하는데, 대표적인 하위 클래스로 NumberFormatException(숫자 형식이 안 맞을 때)이 있어요.

상속 구조는 다음과 같아요.

java.lang.Object
  java.lang.Throwable
    java.lang.Exception
      java.lang.RuntimeException
        java.lang.IllegalArgumentException

RuntimeException의 하위 클래스라서 컴파일러가 checked 처리하지 않아도 돼요. 여러 표준 예외들이 이 클래스를 상속받는데, 예를 들어 IllegalThreadStateException, NumberFormatException, InvalidPathException 등이 있어요.

생성자

  • IllegalArgumentException() — 상세 메시지 없이 생성해요.
  • IllegalArgumentException(String s) — 지정된 상세 메시지로 생성해요.
  • IllegalArgumentException(String message, Throwable cause) — 상세 메시지와 원인(cause)을 함께 지정해요. 원인의 메시지가 자동으로 이 예외의 메시지에 합쳐지지는 않아요.
  • IllegalArgumentException(Throwable cause) — 원인만 지정하고, 메시지는 cause == null ? null : cause.toString() 형태로 만들어요. 다른 예외를 감싸는(wrapper) 용도로 유용해요.

처음 두 생성자는 자바 1.0부터, cause를 받는 두 생성자는 1.5부터 제공돼요.

더 알아보기 (Learn more)