package jas.util; public class NestedException extends Exception implements HasNestedException { private Throwable detail; /** * Create a remote exception */ public NestedException() {} /** * Create a remote exception with the specified string */ public NestedException(String s) { super(s); } /** * Create a remote exception with the specified string, and the * exception specified. */ public NestedException(String s, Throwable ex) { super(s); detail = ex; } public Throwable getNestedException() { return detail; } /** * Produce the message, include the message from the nested * exception if there is one. */ public String getMessage() { return formatNestedException(this); } /** * Return just the super classes message */ public String getSimpleMessage() { return super.getMessage(); } public static String formatNestedException(HasNestedException t) { Throwable nest = t.getNestedException(); if (nest == null) return t.getSimpleMessage(); else return t.getSimpleMessage() + "; nested exception is: \n\t" + nest.toString(); } public void printStackTrace() { super.printStackTrace(); if (detail != null) { System.err.println("Nested Exception is:"); detail.printStackTrace(); } } public void printStackTrace(java.io.PrintStream s) { super.printStackTrace(s); if (detail != null) { s.println("Nested Exception is:"); detail.printStackTrace(s); } } public void printStackTrace(java.io.PrintWriter s) { super.printStackTrace(s); if (detail != null) { s.println("Nested Exception is:"); detail.printStackTrace(s); } } }