import java.io.IOException;
import java.sql.SQLException;
import java.util.zip.DataFormatException;
import .PmInfoException;
/**
*/
public class EccExceptionComm
{
/**
* 模块名称
*/
public static final String PROJECT_MANAGE_MODULE_NAME = "项目管理";
/**
* 系统名称
*/
public static final String APP_NAME = "ECC";
/**
* 控制层
*/
public static final String ERROR_LAYER_ACTION = "action";
/**
* 业务逻辑层
*/
public static final String ERROR_LAYER_SERVICE = "service";
/**
* 数据访问层
*/
public static final String ERROR_LAYER_DAO = "dao";
/**
* 异常键
*/
public static final String ERROR_KEY = "ecc.exception.customer.message";
/**
* 项目管理模块代码
*/
private static final String PROJECT_MANAGE_MODULE_CODE = "10";
/**
* 数据访问层异常代码
*/
private static final String DOA_EXCEPTION_CODE = "01";
/**
* 服务层异常代码
*/
private static final String SERVICE_EXCEPTION_CODE = "02";
/**
* 控制层异常代码
*/
private static final String ACTION_EXCEPTION_CODE = "03";
/**
* 定义外的异常
*/
private static final String OTHER_EXCEPTION = "000";
/**
* SQL异常
*/
private static final String SQL_EXCEPTION = "001";
/**
* IO异常
*/
private static final String IO_EXCEPTION = "002";
/**
* 空指针异常
*/
private static final String NULL_POINTER_EXCEPTION = "003";
/**
* 类运行期异常
*/
private static final String CLASS_CAST_EXCEPTION = "004";
/**
* 数据格式异常
*/
private static final String DATA_FORMAT_EXCEPTION = "005";
/**
* 非法参数异常
*/
private static final String ILLEGAL_ARGUMENT_EXCEPTION = "006";
/**
* 下标越界异常
*/
private static final String INDEX_OUTOF_BOUNDS_EXCEPTION = "007";
/**
* 类不存在异常
*/
private static final String CLASS_NOT_FOUND_EXCEPTION = "008";
/**
* 方法不存在异常
*/
private static final String NO_SUCH_METHOD_EXCEPTION = "009";
/**
* 属性域不存在异常
*/
private static final String NO_SUCH_FIELD_EXCEPTION = "010";
/**
* 方法编号:01
* 方法名称: getEccInfoException
* 内容摘要: 抛出异常得静态公用方法
*
* @param className
* @param errorKey
* @param errorLayer
* @param mothedName
* @param exceptionMessage
* @param ex
* @throws EccInfoException
*/
public static synchronized void throwEccInfoException(
String errorLayer,
String moduleName,
String className,
Exception exception)
throws EccInfoException
{
//判断异常是否已经是EccInfoException
if (exception instanceof EccInfoException)
{
//直接抛出扑抓到得异常
throw (EccInfoException) exception;
}
//初始化异常码
StringBuffer errorCode = new StringBuffer();
//判断模块名称
if(PROJECT_MANAGE_MODULE_NAME.equals(moduleName))
{
errorCode.append(PROJECT_MANAGE_MODULE_CODE);
}
//判断是否控制层抛出的异常
if (ERROR_LAYER_ACTION.equals(errorLayer))
{
errorCode.append(ACTION_EXCEPTION_CODE);
}
//判断是否服务层抛出的异常
else if (ERROR_LAYER_SERVICE.equals(errorLayer))
{
errorCode.append(SERVICE_EXCEPTION_CODE);
}
//判断是否数据访问层抛出的异常
else if (ERROR_LAYER_DAO.equals(errorLayer))
{
errorCode.append(DOA_EXCEPTION_CODE);
}
//判断是否为SQL异常异常
if (exception instanceof SQLException)
{
errorCode.append(SQL_EXCEPTION);
}
//判断是否为IO异常
else if (exception instanceof IOException)
{
errorCode.append(IO_EXCEPTION);
}
//判断是否为空指针异常
else if (exception instanceof NullPointerException)
{
errorCode.append(NULL_POINTER_EXCEPTION);
}
//判断是否为类运行期异常
else if (exception instanceof ClassCastException)
{
errorCode.append(CLASS_CAST_EXCEPTION);
}
//判断是否为数据格式异常
else if (exception instanceof DataFormatException)
{
errorCode.append(DATA_FORMAT_EXCEPTION);
}
//判断是否为非法参数异常
else if (exception instanceof IllegalArgumentException)
{
errorCode.append(ILLEGAL_ARGUMENT_EXCEPTION);
}
//判断是否为下标越界异常
else if (exception instanceof IndexOutOfBoundsException)
{
errorCode.append(INDEX_OUTOF_BOUNDS_EXCEPTION);
}
//判断是否为类不存在异常
else if (exception instanceof ClassNotFoundException)
{
errorCode.append(CLASS_NOT_FOUND_EXCEPTION);
}
//判断是否为方法不存在异常
else if (exception instanceof NoSuchMethodException)
{
errorCode.append(NO_SUCH_METHOD_EXCEPTION);
}
//判断是否为属性域不存在异常
else if (exception instanceof NoSuchFieldException)
{
errorCode.append(NO_SUCH_METHOD_EXCEPTION);
}
//判断是否为定义外的异常
else
{
errorCode.append(OTHER_EXCEPTION);
}
//构造异常
EccInfoException pmInfoException =
new EccInfoException(APP_NAME, errorLayer, moduleName, className, errorCode.toString(), exception);
throw pmInfoException;
}
}