org.apache.commons.lang.exception

Class NestableException

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 descendants of NestedException, when the exception is finally printed out using any of the printStackTrace() methods, the stack trace 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 stack trace:

 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
 

Since: 1.0

Version: $Id: NestableException.java 491651 2007-01-01 22:01:32Z ggregory $

Author: Rafal Krzewski Daniel Rall Kasper Nielsen Steven Caswell

Field Summary
protected NestableDelegatedelegate
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(Throwable cause)
Constructs a new NestableException with specified nested Throwable.
NestableException(String msg, Throwable cause)
Constructs a new NestableException with specified detail message and nested Throwable.
Method Summary
ThrowablegetCause()
StringgetMessage()
Returns the detail message string of this throwable.
StringgetMessage(int index)
String[]getMessages()
ThrowablegetThrowable(int index)
intgetThrowableCount()
Throwable[]getThrowables()
intindexOfThrowable(Class type)
intindexOfThrowable(Class type, int fromIndex)
voidprintPartialStackTrace(PrintWriter out)
voidprintStackTrace()
voidprintStackTrace(PrintStream out)
voidprintStackTrace(PrintWriter out)

Field Detail

delegate

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

Constructor Detail

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(Throwable cause)
Constructs a new NestableException with specified nested Throwable.

Parameters: cause the exception or error that caused this exception to be thrown

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

Method Detail

getCause

public Throwable getCause()
{@inheritDoc }

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

Returns: String message string of the throwable

getMessage

public String getMessage(int index)
{@inheritDoc }

getMessages

public String[] getMessages()
{@inheritDoc }

getThrowable

public Throwable getThrowable(int index)
{@inheritDoc }

getThrowableCount

public int getThrowableCount()
{@inheritDoc }

getThrowables

public Throwable[] getThrowables()
{@inheritDoc }

indexOfThrowable

public int indexOfThrowable(Class type)
{@inheritDoc }

indexOfThrowable

public int indexOfThrowable(Class type, int fromIndex)
{@inheritDoc }

printPartialStackTrace

public final void printPartialStackTrace(PrintWriter out)
{@inheritDoc }

printStackTrace

public void printStackTrace()
{@inheritDoc }

printStackTrace

public void printStackTrace(PrintStream out)
{@inheritDoc }

printStackTrace

public void printStackTrace(PrintWriter out)
{@inheritDoc }
Copyright © 2001-2005 - Apache Software Foundation