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 161243 2005-04-14 04:30:28Z ggregory $