UndeclaredThrowableException — 선언되지 않은 예외 래퍼
UndeclaredThrowableException — 선언되지 않은 예외 래퍼
UndeclaredThrowableException은 프록시 인스턴스에 대한 메서드 호출에서, 해당 인스턴스의 호출 핸들러(invocation handler)의 invoke 메서드가 체크 예외(RuntimeException이나 Error로 할당 불가능한 Throwable)를 던졌는데, 그 예외가 프록시 인스턴스에서 호출된 메서드의 throws 절에 선언된 예외 타입들 중 어느 것에도 할당되지 않을 때 던져지는 예외예요. UndeclaredThrowableException 인스턴스는 호출 핸들러가 던진 선언되지 않은 체크 예외를 담고 있으며, getUndeclaredThrowable() 메서드로 꺼낼 수 있어요. UndeclaredThrowableException은 RuntimeException을 확장하므로, 체크 예외를 감싼 언체크 예외(unchecked exception)예요.
본문
public UndeclaredThrowableException(Throwable undeclaredThrowable) — 선언되지 않은 예외를 감싸는 예외를 만들어요.
public UndeclaredThrowableException(Throwable undeclaredThrowable, String s) — 선언되지 않은 예외와 상세 메시지를 감싸는 예외를 만들어요.
public Throwable getUndeclaredThrowable() — 이 예외가 감싼 선언되지 않은 예외를 반환해요.
동적 프록시를 사용할 때, 프록시가 구현하는 인터페이스의 메서드가 선언하지 않은 체크 예외를 호출 핸들러가 던지면 이를 직접 던질 수 없어서 이 언체크 래퍼로 감싸 던져요.