Thrown by a method invocation on a proxy instance if its invocation handler's {@link InvocationHandler#invoke invoke} method throws achecked exception (a 
Throwable that is not assignable to 
RuntimeException or 
Error) that is not assignable to any of the exception types declared in the 
throws clause of the method that was invoked on the proxy instance and dispatched to the invocation handler. 
An UndeclaredThrowableException instance contains the undeclared checked exception that was thrown by the invocation handler, and it can be retrieved with the getUndeclaredThrowable() method. UndeclaredThrowableException extends RuntimeException, so it is an unchecked exception that wraps a checked exception. 
As of release 1.4, this exception has been retrofitted to conform to the general purpose exception-chaining mechanism. The "undeclared checked exception that was thrown by the invocation handler" that may be provided at construction time and accessed via the {@link #getUndeclaredThrowable()} method is now known as thecause, and may be accessed via the {@link Throwable#getCause()} method, as well as the aforementioned "legacymethod."
@author Peter Jones
@version 1.15, 06/04/07
@see InvocationHandler
@since 1.3