IllegalStateException — 메서드가 불려선 안 될 시점에 불렸을 때
IllegalStateException — 메서드가 불려선 안 될 시점에 불렸을 때
IllegalStateException은 메서드가 부적절한(illegal) 시점이나 부적절한 상태에서 호출됐음을 나타내는 예외예요. 다시 말해, 요청한 연산을 수행하기에 자바 환경이나 애플리케이션 상태가 적절하지 않다는 뜻이에요.
본문
예를 들어 아직 초기화되지 않은 객체에 연산을 시도하거나, 이미 닫힌 스트림에서 작업하려 할 때 이 예외가 흔히 던져져요. 특히 컬렉션 iterator에서 요소를 제거하려는데 이전에 next()를 호출하지 않았다든지, Scanner나 스트림이 이미 닫혀 있는데 또 쓴다든지 하는 상황에서 많이 만나요.
상속 구조는 다음과 같아요.
java.lang.Object
java.lang.Throwable
java.lang.Exception
java.lang.RuntimeException
java.lang.IllegalStateException
많은 표준 예외가 이 클래스를 상속받는데, 예를 들어 CancellationException, ClosedFileSystemException, FormatterClosedException 등이 있어요.
생성자
IllegalStateException()— 상세 메시지 없이 생성해요.IllegalStateException(String s)— 지정된 상세 메시지로 생성해요.IllegalStateException(String message, Throwable cause)— 상세 메시지와 원인을 함께 지정해요. 원인의 메시지는 자동으로 합쳐지지 않아요.IllegalStateException(Throwable cause)— 원인만 지정하고, 메시지는cause == null ? null : cause.toString()형태로 생성해요. 다른 예외를 감싸는 용도로 유용해요.
cause를 받는 생성자는 자바 1.5부터 제공돼요.