package com.ycsoft.commons.exception; import java.io.PrintStream; import java.io.PrintWriter; /** * 报表内部逻辑错误 * @author lxr * */ public class ReportException extends Exception { /** * */ private static final long serialVersionUID = -761870458775302435L; private String sql=""; private boolean prompt_sign=false;//错误显示级别 true表示只在前台提示 public ReportException( String msg ){ super(msg); prompt_sign=true; } public ReportException( String msg,String sql ){ super(msg); this.sql=sql; prompt_sign=true; } public ReportException( String msg,Exception e,String sql ){ super(msg,e); this.sql=sql; } public ReportException(Exception e){ super(e.getMessage(),e); } public ReportException(Exception e,String sql){ super(e.getMessage(),e); this.sql=sql; } public ReportException( String msg ,Exception e){ super( msg , e ) ; } /** * 重定义错误打印堆栈 * 输出底层错误堆栈 */ @Override public void printStackTrace(){ this.printStackTrace(System.err); } /** * 重定义错误打印堆栈 * 输出底层错误堆栈 */ @Override public void printStackTrace(PrintStream s){ Throwable e=getCause(); String message=this.getClass().getName()+":"+getMessage(); if(e!=null) message=message+"\n"+e.getClass().getName()+":"+e.getMessage(); while(e!=null&&e.getCause()!=null){ e=e.getCause(); message=message+"\n"+e.getClass().getName()+":"+e.getMessage(); } if(e==null) e=this; synchronized (s) { s.println(message); if(sql!=null&&!sql.trim().equals("")){ s.println(); s.println(sql); } StackTraceElement[] trace = e.getStackTrace(); for (StackTraceElement element : trace) s.println("\tat " + element); } } /** * 重定义错误打印堆栈 * 输出底层错误堆栈 */ @Override public void printStackTrace(PrintWriter s){ Throwable e=getCause(); String message=this.getClass().getName()+":"+getMessage(); if(e!=null) message=message+"\n"+e.getClass().getName()+":"+e.getMessage(); while(e!=null&&e.getCause()!=null){ e=e.getCause(); message=message+"\n"+e.getClass().getName()+":"+e.getMessage(); } if(e==null) e=this; synchronized (s) { s.println(message); if(sql!=null&&!sql.trim().equals("")){ s.println(); s.println(sql); } StackTraceElement[] trace = e.getStackTrace(); for (StackTraceElement element : trace) s.println("\tat " + element); } } public String getSql() { return sql; } public boolean isPrompt_sign() { return prompt_sign; } }