IllegalArgumentException — 부적절한 인자가 전달됐을 때
IllegalArgumentException — 부적절한 인자가 전달됐을 때
IllegalArgumentException은 메서드에 부적절하거나(illegal) 어울리지 않는(inappropriate) 인자가 전달됐을 때 던져지는 예외예요. 자바에서 가장 흔하게 만나는 런타임 예외 중 하나로, "이 메서드가 기대하는 값의 범위나 형식과 맞지 않는 게 들어왔다"는 신호예요.
본문
예를 들어 음수가 되면 안 되는 값에 음수를 넣거나, 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부터 제공돼요.