ChainedRuntimeException.java :  » J2EE » Enhydra-Application-Framework » com » lutris » util » Java Open Source

Java Open Source » J2EE » Enhydra Application Framework 
Enhydra Application Framework » com » lutris » util » ChainedRuntimeException.java

/*
 * Enhydra Java Application Server Project
 * 
 * The contents of this file are subject to the Enhydra Public License
 * Version 1.1 (the "License"); you may not use this file except in
 * compliance with the License. You may obtain a copy of the License on
 * the Enhydra web site ( http://www.enhydra.org/ ).
 * 
 * Software distributed under the License is distributed on an "AS IS"
 * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See 
 * the License for the specific terms governing rights and limitations
 * under the License.
 * 
 * The Initial Developer of the Enhydra Application Server is Lutris
 * Technologies, Inc. The Enhydra Application Server and portions created
 * by Lutris Technologies, Inc. are Copyright Lutris Technologies, Inc.
 * All Rights Reserved.
 * 
 * Contributor(s):
 * 
 * $Id: ChainedRuntimeException.java,v 1.2 2006-06-15 13:40:47 sinisa Exp $
 */

package com.lutris.util;

import java.io.PrintStream;
import java.io.PrintWriter;

/**
 * RuntimeException used as a base for creating an exception that has a chain
 * of exceptions that lead to the derived exception.  Very useful for
 * interfaces where the implementation exception is not known.
 */
public class ChainedRuntimeException extends RuntimeException implements ChainedThrowable {
    private Throwable cause;

    /**
     * Construct an exception without a specified cause.
     *
     * @param msg The message associated with the exception.
     */
    public ChainedRuntimeException(String msg) {
        super(msg);
        cause = null;
    }

    /**
     * Construct an exception with an associated causing exception.
     *
     * @param msg The message associated with the exception.
     * @param cause The error or exception that cause this
     *  exception.
     */
    public ChainedRuntimeException(String msg,
                            Throwable cause) {
        super(msg);
        this.cause = cause;
    }

    /**
     * Construct an exception from a causing exception.
     *
     * @param cause The error or exception that cause this
     *  exception. The message will be take be this object's
     *  messasge.
     */
    public ChainedRuntimeException(Throwable cause) {
        super(ChainedThrowableUtil.makeMessage(cause));
        this.cause = cause;
    }

    /**
     * Return the message associated with this exception.  If causes
     * are included, they will be appended to the message.
     */
    public String getMessage() {
        return ChainedThrowableUtil.getMessage(this, super.getMessage());
    }

    /**
     * Get the causing exception associated with this exception.
     * @return The causing exception or null if no cause is specified.
     */
    public Throwable getCause() {
        return cause;
    }

    /**
     * Prints this ChainedRuntimeException and its backtrace, and the causes
     * and their stack traces to the standard error stream. 
     */
    public void printStackTrace() {
        super.printStackTrace();
        ChainedThrowableUtil.printCauseTrace(this);
    }

    /**
     * Prints this ChainedRuntimeException and its backtrace, and the causes
     * and their stack traces to the e specified print stream. 
     */
    public void printStackTrace(PrintStream s) {
        super.printStackTrace(s);
        ChainedThrowableUtil.printCauseTrace(this, s);
    }

    /**
     * Prints this ChainedRuntimeException and its backtrace, and the causes
     * and their stack traces to the e specified print writer. 
     */
    public void printStackTrace(PrintWriter s) {
        super.printStackTrace(s);
        ChainedThrowableUtil.printCauseTrace(this, s);
    }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.