001: /*
002: * @(#)InvocationTargetException.java 1.19 06/10/10
003: *
004: * Copyright 1990-2006 Sun Microsystems, Inc. All Rights Reserved.
005: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
006: *
007: * This program is free software; you can redistribute it and/or
008: * modify it under the terms of the GNU General Public License version
009: * 2 only, as published by the Free Software Foundation.
010: *
011: * This program is distributed in the hope that it will be useful, but
012: * WITHOUT ANY WARRANTY; without even the implied warranty of
013: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
014: * General Public License version 2 for more details (a copy is
015: * included at /legal/license.txt).
016: *
017: * You should have received a copy of the GNU General Public License
018: * version 2 along with this work; if not, write to the Free Software
019: * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
020: * 02110-1301 USA
021: *
022: * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
023: * Clara, CA 95054 or visit www.sun.com if you need additional
024: * information or have any questions.
025: *
026: */
027:
028: package java.lang.reflect;
029:
030: /**
031: * InvocationTargetException is a checked exception that wraps
032: * an exception thrown by an invoked method or constructor.
033: *
034: * <p>As of release 1.4, this exception has been retrofitted to conform to
035: * the general purpose exception-chaining mechanism. The "target exception"
036: * that is provided at construction time and accessed via the
037: * {@link #getTargetException()} method is now known as the <i>cause</i>,
038: * and may be accessed via the {@link Throwable#getCause()} method,
039: * as well as the aforementioned "legacy method."
040: *
041: * @see Method
042: * @see Constructor
043: */
044: public class InvocationTargetException extends Exception {
045: /**
046: * Use serialVersionUID from JDK 1.1.X for interoperability
047: */
048: private static final long serialVersionUID = 4085088731926701167L;
049:
050: /**
051: * This field holds the target if the
052: * InvocationTargetException(Throwable target) constructor was
053: * used to instantiate the object
054: *
055: * @serial
056: *
057: */
058: private Throwable target;
059:
060: /**
061: * Constructs an <code>InvocationTargetException</code> with
062: * <code>null</code> as the target exception.
063: */
064: protected InvocationTargetException() {
065: super ((Throwable) null); // Disallow initCause
066: }
067:
068: /**
069: * Constructs a InvocationTargetException with a target exception.
070: *
071: * @param target the target exception
072: */
073: public InvocationTargetException(Throwable target) {
074: super ((Throwable) null); // Disallow initCause
075: this .target = target;
076: }
077:
078: /**
079: * Constructs a InvocationTargetException with a target exception
080: * and a detail message.
081: *
082: * @param target the target exception
083: * @param s the detail message
084: */
085: public InvocationTargetException(Throwable target, String s) {
086: super (s, null); // Disallow initCause
087: this .target = target;
088: }
089:
090: /**
091: * Get the thrown target exception.
092: *
093: * <p>This method predates the general-purpose exception chaining facility.
094: * The {@link Throwable#getCause()} method is now the preferred means of
095: * obtaining this information.
096: *
097: * @return the thrown target exception (cause of this exception).
098: */
099: public Throwable getTargetException() {
100: return target;
101: }
102:
103: /**
104: * Returns the the cause of this exception (the thrown target exception,
105: * which may be <tt>null</tt>).
106: *
107: * @return the cause of this exception.
108: * @since 1.4
109: */
110: public Throwable getCause() {
111: return target;
112: }
113: }
|