1 33 package smallsql.database; 34 35 import java.sql.*; 36 import java.io.*; 37 38 42 class SmallSQLException extends SQLException { 43 44 private static final long serialVersionUID = -1683756623665114L; 45 private boolean isInit; 46 47 48 51 SmallSQLException(Throwable throwable) { 52 super( "[SmallSQL]" + getMsg(throwable), "01000", 0); 53 super.initCause(throwable); 54 init(); 55 } 56 57 58 SmallSQLException(String msg, String sqlState, int vendorCode) { 59 super( "[SmallSQL]" + msg, sqlState, vendorCode); 60 init(); 61 } 62 63 64 private void init(){ 65 this.isInit = true; 66 PrintStream ps = DriverManager.getLogStream(); 67 if(ps != null) this.printStackTrace(ps); 68 } 69 70 71 private static String getMsg(Throwable throwable) { 72 String msg = throwable.getMessage(); 73 if(msg == null || msg.length() < 20){ 74 String msg2 = throwable.getClass().getName(); 75 msg2 = msg2.substring(msg2.lastIndexOf('.')+1); 76 if(msg != null) 77 msg2 = msg2 + ':' + msg; 78 return msg2; 79 } 80 return throwable.getMessage(); 81 } 82 83 84 public void printStackTrace(){ 85 if(!isInit) return; 86 super.printStackTrace(); 87 } 88 89 90 public void printStackTrace(PrintStream ps){ 91 if(!isInit) return; 92 super.printStackTrace(ps); 93 } 94 95 96 public void printStackTrace(PrintWriter pw){ 97 if(!isInit) return; 98 super.printStackTrace(pw); 99 } 100 } 101 | Popular Tags |