01: // Copyright (c) 2003-2007, Jodd Team (jodd.sf.net). All Rights Reserved.
02:
03: package jodd.util;
04:
05: import java.io.PrintWriter;
06: import java.io.PrintStream;
07:
08: /**
09: * Unchecked exception and also a wrapper for checked exceptions.
10: */
11: public class UncheckedException extends RuntimeException {
12:
13: protected final Throwable cause;
14:
15: // ---------------------------------------------------------------- constructors
16:
17: public UncheckedException(Throwable t) {
18: super (t.getMessage());
19: cause = t;
20: }
21:
22: public UncheckedException() {
23: super ();
24: cause = null;
25: }
26:
27: public UncheckedException(String message) {
28: super (message);
29: cause = null;
30: }
31:
32: public UncheckedException(String message, Throwable t) {
33: super (message, t);
34: cause = t;
35: }
36:
37: // ---------------------------------------------------------------- stack trace
38:
39: @Override
40: public void printStackTrace() {
41: printStackTrace(System.err);
42: }
43:
44: @Override
45: public void printStackTrace(PrintStream printStream) {
46: synchronized (printStream) {
47: printStream.print(getClass().getName() + ": ");
48: super .printStackTrace(printStream);
49: }
50: }
51:
52: @Override
53: public void printStackTrace(PrintWriter printWriter) {
54: synchronized (printWriter) {
55: printWriter.print(getClass().getName() + ": ");
56: super .printStackTrace(printWriter);
57: }
58: }
59:
60: // ---------------------------------------------------------------- cause
61:
62: /**
63: * Rethrows cause.
64: */
65: public void rethrow() throws Throwable {
66: if (cause == null) {
67: return;
68: }
69: throw cause;
70: }
71:
72: /**
73: * Returns exception cause.
74: */
75: @Override
76: public Throwable getCause() {
77: return cause;
78: }
79:
80: }
|