Home | History | Annotate | Download | only in reflect
      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 
     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() { 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