001    /*
002    @license.text@
003     */
004    package biz.hammurapi.sql;
005    
006    import java.io.PrintStream;
007    import java.io.PrintWriter;
008    import java.sql.SQLException;
009    
010    /**
011     * @author Pavel Vlasov
012     * @revision $Revision$
013     */
014    public class SQLExceptionEx extends SQLException {
015            private Throwable cause;
016            
017            public Throwable getCause() {
018                    return cause;
019            }
020    
021            public SQLExceptionEx() {
022                    super();
023            }
024    
025            public SQLExceptionEx(String message) {
026                    super(message);
027            }
028    
029            public SQLExceptionEx(String message, Throwable cause) {
030                    super(message);
031                    this.cause=cause;
032            }
033    
034            public SQLExceptionEx(Throwable cause) {
035                    super("Caused by: "+cause);
036                    this.cause=cause;
037            }
038            
039            public void printStackTrace() {
040                    super.printStackTrace();
041                    if (cause!=null) {
042                            System.err.println("=== NESTED EXCEPTION ===");
043                            cause.printStackTrace();
044                    }               
045            }
046    
047            public void printStackTrace(PrintWriter p) {
048                    super.printStackTrace(p);
049                    if (cause!=null) {
050                            p.println("=== NESTED EXCEPTION ===");
051                            cause.printStackTrace(p);
052                    }                               
053            }
054    
055            public void printStackTrace(PrintStream p) {
056                    super.printStackTrace(p);
057                    if (cause!=null) {
058                            p.println("=== NESTED EXCEPTION ===");
059                            cause.printStackTrace(p);
060                    }                               
061            }       
062    
063    }