package com.taobao.tddl.common.exception;
import java.io.PrintStream;
import java.io.PrintWriter;
import java.sql.SQLException;
import org.apache.commons.lang.exception.Nestable;
import org.apache.commons.lang.exception.NestableDelegate;
/**
* Tddl nestabled {@link SQLException}
*
* @author jianghang 2013-10-24 下午2:54:56
* @since 5.0.0
*/
public class TddlSQLException extends SQLException implements Nestable {
private static final long serialVersionUID = -4558269080286141706L;
public TddlSQLException(SQLException cause){
this(null, cause);
}
public TddlSQLException(String message, SQLException cause){
super(message);
if (cause == null) {
throw new IllegalArgumentException("必须填入SQLException");
}
this.cause = cause;
}
protected NestableDelegate delegate = new NestableDelegate(this);
protected final SQLException cause;
/**
* {@inheritDoc}
*/
public SQLException getCause() {
return cause;
}
public String getMessage() {
if (super.getMessage() != null) {
return super.getMessage();
} else if (cause != null) {
return cause.toString();
} else {
return null;
}
}
/**
* {@inheritDoc}
*/
public String getMessage(int index) {
if (index == 0) {
return super.getMessage();
}
return delegate.getMessage(index);
}
/**
* {@inheritDoc}
*/
public String[] getMessages() {
return delegate.getMessages();
}
/**
* {@inheritDoc}
*/
public Throwable getThrowable(int index) {
return delegate.getThrowable(index);
}
/**
* {@inheritDoc}
*/
public int getThrowableCount() {
return delegate.getThrowableCount();
}
/**
* {@inheritDoc}
*/
public Throwable[] getThrowables() {
return delegate.getThrowables();
}
/**
* {@inheritDoc}
*/
public int indexOfThrowable(Class type) {
return delegate.indexOfThrowable(type, 0);
}
/**
* {@inheritDoc}
*/
public int indexOfThrowable(Class type, int fromIndex) {
return delegate.indexOfThrowable(type, fromIndex);
}
/**
* {@inheritDoc}
*/
public void printStackTrace() {
delegate.printStackTrace();
}
/**
* {@inheritDoc}
*/
public void printStackTrace(PrintStream out) {
delegate.printStackTrace(out);
}
/**
* {@inheritDoc}
*/
public void printStackTrace(PrintWriter out) {
delegate.printStackTrace(out);
}
/**
* {@inheritDoc}
*/
public final void printPartialStackTrace(PrintWriter out) {
super.printStackTrace(out);
}
}