com.interface21.core
Class NestedCheckedException

java.lang.Object
  |
  +--java.lang.Throwable
        |
        +--java.lang.Exception
              |
              +--com.interface21.core.NestedCheckedException
All Implemented Interfaces:
HasRootCause, java.io.Serializable

public abstract class NestedCheckedException
extends java.lang.Exception
implements HasRootCause

Handy class for wrapping runtime Exceptions with a root cause. This time-honoured technique is no longer necessary in Java 1.4, which provides built-in support for exception nesting. Thus exceptions in applications written to use Java 1.4 need not extend this class.

Abstract to force the programmer to extend the class. printStackTrace() etc. are forwarded to the wrapped Exception. The present assumption is that all application-specific exceptions that could be displayed to humans (users, administrators etc.) will implement the ErrorCoded interface.

The similarity between this class and the NestedCheckedException class is unavoidable, as Java forces these two classes to have different superclasses (ah, the inflexibility of concrete inheritance!).

As discussed in Expert One-On-One J2EE Design and Development, runtime exceptions are often a better alternative to checked exceptions. However, all exceptions should preserve their stack trace, if caused by a lower-level exception.

Version:
$Id: NestedCheckedException.java,v 1.3 2003/05/22 18:07:35 jhoeller Exp $
Author:
Rod Johnson
See Also:
Serialized Form

Constructor Summary
NestedCheckedException(java.lang.String msg)
          Constructs a ExceptionWrapperException with the specified detail message.
NestedCheckedException(java.lang.String msg, java.lang.Throwable ex)
          Constructs a RemoteException with the specified detail message and nested exception.
 
Method Summary
 java.lang.String getMessage()
          Returns the detail message, including the message from the nested exception if there is one.
 java.lang.Throwable getRootCause()
          Returns the nested cause, or null if none.
 void printStackTrace(java.io.PrintStream ps)
          Prints the composite message and the embedded stack trace to the specified stream ps.
 void printStackTrace(java.io.PrintWriter pw)
          Prints the composite message and the embedded stack trace to the specified print writer pw
 
Methods inherited from class java.lang.Throwable
fillInStackTrace, getLocalizedMessage, printStackTrace, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

NestedCheckedException

public NestedCheckedException(java.lang.String msg)
Constructs a ExceptionWrapperException with the specified detail message.
Parameters:
msg - the detail message

NestedCheckedException

public NestedCheckedException(java.lang.String msg,
                              java.lang.Throwable ex)
Constructs a RemoteException with the specified detail message and nested exception.
Parameters:
msg - the detail message
ex - the nested exception
Method Detail

getRootCause

public java.lang.Throwable getRootCause()
Returns the nested cause, or null if none.
Specified by:
getRootCause in interface HasRootCause
Following copied from interface: com.interface21.core.HasRootCause
Returns:
the root cause of this exception, or null if there was no root cause

getMessage

public java.lang.String getMessage()
Returns the detail message, including the message from the nested exception if there is one.
Overrides:
getMessage in class java.lang.Throwable

printStackTrace

public void printStackTrace(java.io.PrintStream ps)
Prints the composite message and the embedded stack trace to the specified stream ps.
Overrides:
printStackTrace in class java.lang.Throwable
Parameters:
ps - the print stream

printStackTrace

public void printStackTrace(java.io.PrintWriter pw)
Prints the composite message and the embedded stack trace to the specified print writer pw
Overrides:
printStackTrace in class java.lang.Throwable
Parameters:
pw - the print writer


Rod Johnson and Spring contributors 2001-2003.