01: /*
02: * Javassist, a Java-bytecode translator toolkit.
03: * Copyright (C) 1999-2006 Shigeru Chiba. All Rights Reserved.
04: *
05: * The contents of this file are subject to the Mozilla Public License Version
06: * 1.1 (the "License"); you may not use this file except in compliance with
07: * the License. Alternatively, the contents of this file may be used under
08: * the terms of the GNU Lesser General Public License Version 2.1 or later.
09: *
10: * Software distributed under the License is distributed on an "AS IS" basis,
11: * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
12: * for the specific language governing rights and limitations under the
13: * License.
14: */
15:
16: package javassist.tools.reflect;
17:
18: import java.lang.reflect.InvocationTargetException;
19: import java.lang.IllegalAccessException;
20:
21: /**
22: * Thrown when method invocation using the reflection API has thrown
23: * an exception.
24: *
25: * @see javassist.tools.reflect.Metaobject#trapMethodcall(int, Object[])
26: * @see javassist.tools.reflect.ClassMetaobject#trapMethodcall(int, Object[])
27: * @see javassist.tools.reflect.ClassMetaobject#invoke(Object, int, Object[])
28: */
29: public class CannotInvokeException extends RuntimeException {
30:
31: private Throwable err = null;
32:
33: /**
34: * Returns the cause of this exception. It may return null.
35: */
36: public Throwable getReason() {
37: return err;
38: }
39:
40: /**
41: * Constructs a CannotInvokeException with an error message.
42: */
43: public CannotInvokeException(String reason) {
44: super (reason);
45: }
46:
47: /**
48: * Constructs a CannotInvokeException with an InvocationTargetException.
49: */
50: public CannotInvokeException(InvocationTargetException e) {
51: super ("by " + e.getTargetException().toString());
52: err = e.getTargetException();
53: }
54:
55: /**
56: * Constructs a CannotInvokeException with an IllegalAccessException.
57: */
58: public CannotInvokeException(IllegalAccessException e) {
59: super ("by " + e.toString());
60: err = e;
61: }
62:
63: /**
64: * Constructs a CannotInvokeException with an ClassNotFoundException.
65: */
66: public CannotInvokeException(ClassNotFoundException e) {
67: super ("by " + e.toString());
68: err = e;
69: }
70: }
|