/* Wotonomy: OpenStep design patterns for pure Java applications. Copyright (C) 2000 Michael Powers This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, see http://www.gnu.org */ package net.wotonomy.foundation.internal; import java.io.PrintStream; import java.io.PrintWriter; /** * This is a simple RuntimeException that can encapsulate * another throwable. Behaves as a normal RuntimeException * except that it prints a stack trace of the wrapped * throwable if one is specified. * * Intended to be used anytime you'd * report an exception with System.out.println: that is, * for debugging and non-user-visible exceptions. * * @author michael@mpowers.net * @author $Author: cgruber $ * @version $Revision: 893 $ */ public class WotonomyException extends RuntimeException { protected String message; protected Throwable wrappedThrowable; /** * Default constructor. */ public WotonomyException() { super(); message = null; wrappedThrowable = null; } /** * Standard constructor with message. */ public WotonomyException( String aMessage ) { super( aMessage ); message = aMessage; wrappedThrowable = null; } /** * Specifies a throwable to wrap. */ public WotonomyException( Throwable aThrowable ) { super(); message = null; wrappedThrowable = aThrowable; } /** * Specifies a message and a throwable to wrap. */ public WotonomyException( String aMessage, Throwable aThrowable ) { super( aMessage ); message = aMessage; wrappedThrowable = aThrowable; } /** * Returns the wrapped throwable. */ public Throwable getWrappedThrowable() { return wrappedThrowable; } public void printStackTrace(PrintWriter s) { if ( message != null ) { s.println( "Exception: " + message ); } if ( wrappedThrowable != null ) { wrappedThrowable.printStackTrace( s ); return; } super.printStackTrace( s ); } public void printStackTrace(PrintStream s) { if ( message != null ) { s.println( "Exception: " + message ); } if ( wrappedThrowable != null ) { wrappedThrowable.printStackTrace( s ); return; } super.printStackTrace( s ); } public void printStackTrace() { if ( message != null ) { System.err.println( "Exception: " + message ); } if ( wrappedThrowable != null ) { wrappedThrowable.printStackTrace(); return; } super.printStackTrace(); } }