NestedException package com.ack.util; import java.io.PrintWriter; import java.io.StringWriter; /** * Allows an exception to be nested inside it *
Note that this class will not be required with J2SE v1.4 and * above because java.lang.Exception has been updated to provide * this behaviour */ public class NestedException extends Exception { private Throwable underlyingException; /** * Constructor * @param msg The exception error message */ public NestedException( String msg ) { super( msg ); } /** * Constructor * @param msg The exception error message * @param t The nested exception */ public NestedException( String msg, Throwable t ) { super( msg ); underlyingException = t; } /** * Gets back the original triggering exception * @return The original exception as a throwable */ public Throwable getUnderlyingException() { return underlyingException; } /** * Overrides object.toString() * @return The exception in string format */ public String toString() { StringWriter sw = new StringWriter(); PrintWriter pw = new PrintWriter( sw ); pw.println( getMessage() ); if( underlyingException != null ) { pw.println( "\n==== Exception 'inside' NestedException listed below =====" ); underlyingException.printStackTrace( pw ); pw.println( "\n========= end of exception 'inside' NestedException ========= " ); } pw.close(); return sw.toString(); } }