}
public void execute(final JoinPoint joinPoint) throws Throwable {
// Needs to cast to the correct join point.
// A bit tedious but optimizes the performance since I otherwise need to perform a cast at EVERY invocation
final ThrowsJoinPoint jp = (ThrowsJoinPoint)joinPoint;
final Throwable exception = jp.getException();
final String message = jp.getMessage();
final Class klass = jp.getExceptionClass();
final String exceptionName = jp.getExceptionName();
final String localizedMessage = jp.getLocalizedMessage();
final Method method = jp.getMethod();
final String methodName = jp.getMethodName();
final Class[] methodParameterTypes = jp.getMethodParameterTypes();
final Object[] methodParameters = jp.getMethodParameters();
final Class methodReturnType = jp.getMethodReturnType();
final Object originalObject = jp.getTargetInstance();
final String originalObjectClassName = jp.getTargetClass().getName();
throw new test.xmldef.TestException(
exception +
message +
klass +
exceptionName +