package com.vci.starter.web.exception; import com.vci.starter.web.util.MessageUtils; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.text.MessageFormat; import java.util.Locale; import java.util.ResourceBundle; /** * 基本的异常,继承自RuntimeException可以被spring的事务管理自动处理 */ public class VciBaseException extends RuntimeException { /** * 日志对象 */ private Logger log = LoggerFactory.getLogger(getClass()); /** * 参数为空 */ public static final String paramNull = "com.vci.base.paramNull"; /** * 字段的值重复 */ public static final String fieldValueRepeat="com.vci.base.fieldValueRepeat"; /** * 对象没有在系统中存在 */ public static final String objectNotFoundInDb="com.vci.base.objectNotFoundInDb"; /** * ts的值不存在 */ public static final String tsNotEqual="com.vci.base.tsNotEqual"; /** * 值不符合日期格式的要求 */ public static final String dateValueFormatError="com.vci.base.dateValueForamtError"; /** * 没有登录 */ public static final String notLogin="com.vci.base.notLogin"; /** * 没有权限 */ public static final String notRight="com.vci.base.notRight"; /** * 没有数据权限 */ public static final String notDataRight="com.vci.base.notDataRight"; /** * 没有UI权限 */ public static final String notUIRight="com.vci.base.notUIRight"; /** * 连接corba服务失败 */ public static final String connectCorbaFail="com.vci.base.connectCorbaFail"; /** * corba服务没有配置 */ public static final String corbaNotConfig="com.vci.base.corbaNotConfig "; /** * 错误编码 */ private String code ; /** * 错误对象 */ private Object[] objs = new Object[0]; /** * 构造方法 * @param code 编码 */ public VciBaseException(String code){ this.code = code; } /** * 构造方法 * @param code 编码 * @param objs 错误对象 */ public VciBaseException(String code, Object[] objs){ this.code= code; this.objs = objs; } /** * 构造方法 * @param code 错误编码 * @param objs 错误信息对象 * @param e 异常对象 */ public VciBaseException(String code,Object[] objs,Throwable e){ super(e); this.code= code; this.objs = objs; } public String getCode() { return code; } public void setCode(String code) { this.code = code; } public Object[] getObjs() { return objs; } public void setObjs(Object[] objs) { this.objs = objs; } /** * 将异常的信息转换为本地化语言 * @return 转换后的本地化信息 */ public String getErrorMsg(){ if( this instanceof VciBaseException || this.getClass().getSuperclass().equals(VciBaseException.class)){ if(StringUtils.isNotBlank(code)){ code = MessageUtils.get(code,this.objs); } code = MessageFormat.format(code,this.objs); return code; }else if( this instanceof Exception){ return getMessage(); }else{ return code; } } /** * 获取错误信息 * @return 错误信息 */ @Override public String getMessage(){ return getCode() +"," + getErrorMsg(); } }