TypeNotPresentException
TypeNotPresentException (타입 부재 예외)
애플리케이션이 타입의 이름을 나타내는 문자열을 사용해 타입에 접근하려 할 때, 지정된 이름의 타입 정의를 찾을 수 없으면 던져지는 예외입니다.
본문
이 예외는 ClassNotFoundException과 다릅니다. ClassNotFoundException은 checked exception(검사 예외)인 반면, 이 예외는 unbounded(unchecked) 예외입니다.
정의되지 않은 타입 변수에 접근할 때뿐 아니라, 타입(클래스, 인터페이스, 애너테이션 타입 등)을 로드할 때도 사용될 수 있습니다. 특히 타입을 리플렉션 방식으로 읽어들이는 API에서 이 예외가 던져질 수 있습니다.
생성자로 TypeNotPresentException(String typeName, Throwable cause) 형식이 제공되며, typeName() 메서드로 접근하려던 타입 이름을 얻을 수 있습니다.
RuntimeException의 하위 클래스이므로 메서드에서 명시적으로 선언하지 않아도 던질 수 있습니다.
리플렉션 API가 애너테이션을 읽을 때, 애너테이션에 언급된 타입이 클래스패스에 없으면 이 예외가 발생합니다.
typeName() 메서드로 접근을 시도했던 타입의 이름을 얻을 수 있어 진단에 유용합니다.