1/* 2 * Javassist, a Java-bytecode translator toolkit. 3 * Copyright (C) 1999-2007 Shigeru Chiba. All Rights Reserved. 4 * 5 * The contents of this file are subject to the Mozilla Public License Version 6 * 1.1 (the "License"); you may not use this file except in compliance with 7 * the License. Alternatively, the contents of this file may be used under 8 * the terms of the GNU Lesser General Public License Version 2.1 or later. 9 * 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 16package javassist.tools.reflect; 17 18import java.lang.reflect.InvocationTargetException; 19import 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 */ 29public 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() { return err; } 37 38 /** 39 * Constructs a CannotInvokeException with an error message. 40 */ 41 public CannotInvokeException(String reason) { 42 super(reason); 43 } 44 45 /** 46 * Constructs a CannotInvokeException with an InvocationTargetException. 47 */ 48 public CannotInvokeException(InvocationTargetException e) { 49 super("by " + e.getTargetException().toString()); 50 err = e.getTargetException(); 51 } 52 53 /** 54 * Constructs a CannotInvokeException with an IllegalAccessException. 55 */ 56 public CannotInvokeException(IllegalAccessException e) { 57 super("by " + e.toString()); 58 err = e; 59 } 60 61 /** 62 * Constructs a CannotInvokeException with an ClassNotFoundException. 63 */ 64 public CannotInvokeException(ClassNotFoundException e) { 65 super("by " + e.toString()); 66 err = e; 67 } 68} 69