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
author: Rafal Krzewski author: Daniel Rall author: Kasper Nielsen author: Steven Caswell since: 1.0 version: $Id: NestableException.java 491651 2007-01-01 22:01:32Z ggregory $ |