01: /*
02: * Licensed to the Apache Software Foundation (ASF) under one or more
03: * contributor license agreements. See the NOTICE file distributed with
04: * this work for additional information regarding copyright ownership.
05: * The ASF licenses this file to You under the Apache License, Version 2.0
06: * (the "License"); you may not use this file except in compliance with
07: * the License. You may obtain a copy of the License at
08: *
09: * http://www.apache.org/licenses/LICENSE-2.0
10: *
11: * Unless required by applicable law or agreed to in writing, software
12: * distributed under the License is distributed on an "AS IS" BASIS,
13: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14: * See the License for the specific language governing permissions and
15: * limitations under the License.
16: */
17:
18: package java.lang.reflect;
19:
20: /**
21: * This class provides a wrapper for an unexpected exception thrown by an
22: * InvocationHandler
23: *
24: * @see java.lang.reflect.InvocationHandler#invoke
25: */
26: public class UndeclaredThrowableException extends RuntimeException {
27:
28: private static final long serialVersionUID = 330127114055056639L;
29:
30: private Throwable undeclaredThrowable;
31:
32: /**
33: * Constructs a new instance of this class with its walkback and target
34: * exception filled in.
35: *
36: * @param exception
37: * The exception which occurred while loading the class.
38: */
39: public UndeclaredThrowableException(Throwable exception) {
40: super ();
41: this .undeclaredThrowable = exception;
42: initCause(exception);
43: }
44:
45: /**
46: * Constructs a new instance of this class with its walkback, target
47: * exception and message filled in.
48: *
49: * @param detailMessage
50: * String The detail message for the exception.
51: * @param exception
52: * Throwable The exception which occurred while loading the
53: * class.
54: */
55: public UndeclaredThrowableException(Throwable exception,
56: String detailMessage) {
57: super (detailMessage);
58: this .undeclaredThrowable = exception;
59: initCause(exception);
60: }
61:
62: /**
63: * Answers the exception which caused the receiver to be thrown.
64: */
65: public Throwable getUndeclaredThrowable() {
66: return undeclaredThrowable;
67: }
68:
69: /**
70: * Answers the cause of this Throwable, or null if there is no cause.
71: *
72: * @return Throwable The receiver's cause.
73: */
74: @Override
75: public Throwable getCause() {
76: return undeclaredThrowable;
77: }
78: }
|