org.springframework.core
Class NestedCheckedException

java.lang.Object
  extended by java.lang.Throwable
      extended by java.lang.Exception
          extended by org.springframework.core.NestedCheckedException
All Implemented Interfaces:
Serializable
Direct Known Subclasses:
MetaDataAccessException

public abstract class NestedCheckedException
extends Exception

Handy class for wrapping checked Exceptions with a root cause.

This time-honored technique is no longer necessary in Java 1.4, which finally provides built-in support for exception nesting. Thus exceptions in applications written to use Java 1.4 need not extend this class. To ease migration, this class mirrors Java 1.4's nested exceptions as closely as possible.

Abstract to force the programmer to extend the class. getMessage will include nested exception information; printStackTrace etc will delegate to the wrapped exception, if any.

The similarity between this class and the NestedRuntimeException 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.

Author:
Rod Johnson, Juergen Hoeller
See Also:
getMessage(), printStackTrace(java.io.PrintStream), NestedRuntimeException, Serialized Form

Constructor Summary
NestedCheckedException(String msg)
          Construct a NestedCheckedException with the specified detail message.
NestedCheckedException(String msg, Throwable ex)
          Construct a NestedCheckedException with the specified detail message and nested exception.
 
Method Summary
 boolean contains(Class exClass)
          Check whether this exception contains an exception of the given class: either it is of the given class itself or it contains a nested cause of the given class.
 Throwable getCause()
          Return the nested cause, or null if none.
 String getMessage()
          Return the detail message, including the message from the nested exception if there is one.
 void printStackTrace(PrintStream ps)
          Print the composite message and the embedded stack trace to the specified stream.
 void printStackTrace(PrintWriter pw)
          Print the composite message and the embedded stack trace to the specified print writer.
 
Methods inherited from class java.lang.Throwable
fillInStackTrace, getLocalizedMessage, getStackTrace, initCause, printStackTrace, setStackTrace, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

NestedCheckedException

public NestedCheckedException(String msg)
Construct a NestedCheckedException with the specified detail message.

Parameters:
msg - the detail message

NestedCheckedException

public NestedCheckedException(String msg,
                              Throwable ex)
Construct a NestedCheckedException with the specified detail message and nested exception.

Parameters:
msg - the detail message
ex - the nested exception
Method Detail

getCause

public Throwable getCause()
Return the nested cause, or null if none.

Overrides:
getCause in class Throwable

getMessage

public String getMessage()
Return the detail message, including the message from the nested exception if there is one.

Overrides:
getMessage in class Throwable

printStackTrace

public void printStackTrace(PrintStream ps)
Print the composite message and the embedded stack trace to the specified stream.

Overrides:
printStackTrace in class Throwable
Parameters:
ps - the print stream

printStackTrace

public void printStackTrace(PrintWriter pw)
Print the composite message and the embedded stack trace to the specified print writer.

Overrides:
printStackTrace in class Throwable
Parameters:
pw - the print writer

contains

public boolean contains(Class exClass)
Check whether this exception contains an exception of the given class: either it is of the given class itself or it contains a nested cause of the given class.

Currently just traverses NestedCheckedException causes. Will use the JDK 1.4 exception cause mechanism once Spring requires JDK 1.4.

Parameters:
exClass - the exception class to look for


Copyright (c) 2002-2007 The Spring Framework Project.