Invokes a method, masking with a runtime exception all the exceptions. - Java Reflection

Java examples for Reflection:Method

Description

Invokes a method, masking with a runtime exception all the exceptions.

Demo Code

/*//  w ww . ja  va2s  . c  om
 * $Id: ClassUtil.java 709153 2008-10-30 12:54:10Z apetrelli $
 *
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class Main{
    /**
     * Invokes a method, masking with a runtime exception all the exceptions.
     *
     * @param obj The object from which a method will be called.
     * @param method The method to call.
     * @param args The arguments of the method.
     * @return The object returned, if the method is not "void".
     * @since 2.0.7
     */
    public static Object invokeMethod(Object obj, Method method,
            Object... args) {
        try {
            return method.invoke(obj, args);
        } catch (IllegalArgumentException e) {
            throw new CannotAccessMethodException("The arguments for '"
                    + method.getName() + "' in class '"
                    + obj.getClass().getName() + "' are not valid", e);
        } catch (IllegalAccessException e) {
            throw new CannotAccessMethodException("Cannot access '"
                    + method.getName() + "' in class '"
                    + obj.getClass().getName() + "'", e);
        } catch (InvocationTargetException e) {
            throw new CannotAccessMethodException(
                    "An exception has been thrown inside '"
                            + method.getName() + "' in class '"
                            + obj.getClass().getName() + "'", e);
        }
    }
}

Related Tutorials