org.hibernate.exception

Class NestableException

Implemented Interfaces:
Nestable

public class NestableException
extends Exception
implements Nestable

The base class of all exceptions which can contain other exceptions.

It is intended to ease the debugging by carrying on the information about the exception which was caught and provoked throwing the current exception. Catching and rethrowing may occur multiple times, and provided that all exceptions except the first one are descendands of NestedException, when the exception is finally printed out using any of the printStackTrace() methods, the stacktrace will contain the information about all exceptions thrown and caught on the way.

Running the following program

  1 import org.apache.commons.lang.exception.NestableException;
  2
  3 public class Test {
  4     public static void main( String[] args ) {
  5         try {
  6             a();
  7         } catch(Exception e) {
  8             e.printStackTrace();
  9         }
 10      }
 11
 12      public static void a() throws Exception {
 13          try {
 14              b();
 15          } catch(Exception e) {
 16              throw new NestableException("foo", e);
 17          }
 18      }
 19
 20      public static void b() throws Exception {
 21          try {
 22              c();
 23          } catch(Exception e) {
 24              throw new NestableException("bar", e);
 25          }
 26      }
 27
 28      public static void c() throws Exception {
 29          throw new Exception("baz");
 30      }
 31 }
 

Yields the following stacktrace:

 org.apache.commons.lang.exception.NestableException: foo
         at Test.a(Test.java:16)
         at Test.main(Test.java:6)
 Caused by: org.apache.commons.lang.exception.NestableException: bar
         at Test.b(Test.java:24)
         at Test.a(Test.java:14)
         ... 1 more
 Caused by: java.lang.Exception: baz
         at Test.c(Test.java:29)
         at Test.b(Test.java:22)
         ... 2 more
 

Version:
$Id: NestableException.java 4782 2004-11-21 00:11:27Z pgmjsd $
Authors:
Rafal Krzewski
Daniel Rall
Kasper Nielsen
Steven Caswell
Since:
1.0

Field Summary

protected NestableDelegate
delegate
The helper instance which contains much of the code which we delegate to.

Constructor Summary

NestableException()
Constructs a new NestableException without specified detail message.
NestableException(String msg)
Constructs a new NestableException with specified detail message.
NestableException(String msg, Throwable cause)
Constructs a new NestableException with specified detail message and nested Throwable.
NestableException(Throwable cause)
Constructs a new NestableException with specified nested Throwable.

Method Summary

Throwable
getCause()
String
getMessage()
Returns the detail message string of this throwable.
String
getMessage(int index)
String[]
getMessages()
Throwable
getThrowable(int index)
int
getThrowableCount()
Throwable[]
getThrowables()
int
indexOfThrowable(Class type)
int
indexOfThrowable(Class type, int fromIndex)
void
printPartialStackTrace(PrintWriter out)
void
printStackTrace()
void
printStackTrace(PrintStream out)
void
printStackTrace(PrintWriter out)

Field Details

delegate

protected NestableDelegate delegate
The helper instance which contains much of the code which we delegate to.

Constructor Details

NestableException

public NestableException()
Constructs a new NestableException without specified detail message.

NestableException

public NestableException(String msg)
Constructs a new NestableException with specified detail message.
Parameters:
msg - The error message.

NestableException

public NestableException(String msg,
                         Throwable cause)
Constructs a new NestableException with specified detail message and nested Throwable.
Parameters:
msg - the error message
cause - the exception or error that caused this exception to be thrown

NestableException

public NestableException(Throwable cause)
Constructs a new NestableException with specified nested Throwable.
Parameters:
cause - the exception or error that caused this exception to be thrown

Method Details

getCause

public Throwable getCause()
Specified by:
getCause in interface Nestable

getMessage

public String getMessage()
Returns the detail message string of this throwable. If it was created with a null message, returns the following: ( cause==null ? null : cause.toString() ).
Specified by:
getMessage in interface Nestable

getMessage

public String getMessage(int index)
Specified by:
getMessage in interface Nestable

getMessages

public String[] getMessages()
Specified by:
getMessages in interface Nestable

getThrowable

public Throwable getThrowable(int index)
Specified by:
getThrowable in interface Nestable

getThrowableCount

public int getThrowableCount()
Specified by:
getThrowableCount in interface Nestable

getThrowables

public Throwable[] getThrowables()
Specified by:
getThrowables in interface Nestable

indexOfThrowable

public int indexOfThrowable(Class type)
Specified by:
indexOfThrowable in interface Nestable

indexOfThrowable

public int indexOfThrowable(Class type,
                            int fromIndex)
Specified by:
indexOfThrowable in interface Nestable

printPartialStackTrace

public final void printPartialStackTrace(PrintWriter out)
Specified by:
printPartialStackTrace in interface Nestable

printStackTrace

public void printStackTrace()

printStackTrace

public void printStackTrace(PrintStream out)
Specified by:
printStackTrace in interface Nestable

printStackTrace

public void printStackTrace(PrintWriter out)
Specified by:
printStackTrace in interface Nestable