/* * This is public domain software - that is, you can do whatever you want * with it, and include it software that is licensed under the GNU or the * BSD license, or whatever other licence you choose, including proprietary * closed source licenses. I do ask that you leave this header in tact. * * If you make modifications to this code that you think would benefit the * wider community, please send me a copy and I'll post it on my site. * * If you make use of this code, I'd appreciate hearing about it. * metadata_extractor [at] drewnoakes [dot] com * Latest version of this software kept at * http://drewnoakes.com/ */ package com.drew.lang; import java.io.PrintStream; import java.io.PrintWriter; /** * Represents a compound exception, as modelled in JDK 1.4, but * unavailable in previous versions. This class allows support * of these previous JDK versions. */ public class CompoundException extends Exception { private final Throwable _innnerException; public CompoundException(String msg) { this(msg, null); } public CompoundException(Throwable exception) { this(null, exception); } public CompoundException(String msg, Throwable innerException) { super(msg); _innnerException = innerException; } public Throwable getInnerException() { return _innnerException; } public String toString() { StringBuffer sbuffer = new StringBuffer(); sbuffer.append(super.toString()); if (_innnerException != null) { sbuffer.append("\n"); sbuffer.append("--- inner exception ---"); sbuffer.append("\n"); sbuffer.append(_innnerException.toString()); } return sbuffer.toString(); } public void printStackTrace(PrintStream s) { super.printStackTrace(s); if (_innnerException != null) { s.println("--- inner exception ---"); _innnerException.printStackTrace(s); } } public void printStackTrace(PrintWriter s) { super.printStackTrace(s); if (_innnerException != null) { s.println("--- inner exception ---"); _innnerException.printStackTrace(s); } } public void printStackTrace() { super.printStackTrace(); if (_innnerException != null) { System.err.println("--- inner exception ---"); _innnerException.printStackTrace(); } } }