The Spring Framework

org.springframework.core
Class NestedRuntimeException

java.lang.Object
  extended by java.lang.Throwable
      extended by java.lang.Exception
          extended by java.lang.RuntimeException
              extended by org.springframework.core.NestedRuntimeException
All Implemented Interfaces:
Serializable
Direct Known Subclasses:
AopConfigException, AopInvocationException, BeansException, BshScriptUtils.BshExecutionException, DataAccessException, EjbAccessException, JmsException, JmxException, JndiLookupFailureException, JRubyScriptUtils.JRubyExecutionException, MailException, RemoteAccessException, SchedulingException, ScriptCompilationException, TaskRejectedException, TransactionException

public abstract class NestedRuntimeException
extends RuntimeException

Handy class for wrapping runtime Exceptions with a root cause.

This time-honoured 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.

This class is abstract to force the programmer to extend the class. getMessage will include nested exception information; printStackTrace and other like methods will delegate to the wrapped exception, if any.

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!).

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

Constructor Summary
NestedRuntimeException(String msg)
          Construct a NestedRuntimeException with the specified detail message.
NestedRuntimeException(String msg, Throwable cause)
          Construct a NestedRuntimeException with the specified detail message and nested exception.
 
Method Summary
 boolean contains(Class exType)
          Check whether this exception contains an exception of the given type: either it is of the given class itself or it contains a nested cause of the given type.
 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.
 Throwable getMostSpecificCause()
          Retrieve the most specific cause of this exception, that is, either the innermost cause (root cause) or this exception itself.
 Throwable getRootCause()
          Retrieve the innermost cause of this exception, if any.
 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 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

NestedRuntimeException

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

Parameters:
msg - the detail message

NestedRuntimeException

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

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

getCause

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

Note that this will only check one level of nesting. Use getRootCause() to retrieve the innermost cause.

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 writer.

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

getRootCause

public Throwable getRootCause()
Retrieve the innermost cause of this exception, if any.

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

Returns:
the innermost exception, or null if none
Since:
2.0

getMostSpecificCause

public Throwable getMostSpecificCause()
Retrieve the most specific cause of this exception, that is, either the innermost cause (root cause) or this exception itself.

Differs from getRootCause() in that it falls back to the present exception if there is no root cause.

Returns:
the most specific cause (never null)
Since:
2.0.3

contains

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

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

Parameters:
exType - the exception type to look for
Returns:
whether there is a nested exception of the specified type

The Spring Framework

Copyright © 2002-2007 The Spring Framework.