我公司现在需要开发一套自己的异常处理机制,就是当异常出现时,在客户端能够返回具体是哪的什么异常,如微信API以及一些大公司做的那种,求指点方案。
定义一套有规律异常编码,一看返回编码就知道哪里有异常
主要就是定义错误码,可以参考微软的GetLastError的做法,就是提供了各种各样的错误码信息,这样用户可以查询了解具体的错误原因。
package com.lz.ctsframework.core.support;
import java.text.MessageFormat;
/**
*/
public class ServiceException extends RuntimeException {
private static final long serialVersionUID = 6514891174875747380L;
/** 异常错误码 **/
private String code;
/** 异常描述 /
private String msg;
/ 扩展异常描述(包括msg) **/
private String extMsg;
/**
/**
@param paramsList
*/
public ServiceException(ErrorCode errCode, Object... paramsList) {
Object[] params = null;
if ((paramsList != null) && (paramsList.length > 0)
&& ((paramsList[(paramsList.length - 1)] instanceof Throwable)))
{
Object[] newParam = new Object[paramsList.length - 1];
System.arraycopy(paramsList, 0, newParam, 0, newParam.length);
params = newParam;
super.initCause((Throwable)paramsList[(paramsList.length - 1)]);
}
else {
params = paramsList;
super.initCause(null);
}
this.code = null==errCode ? "" : errCode.getCode();
this.msg = null==errCode ? "" : MessageFormat.format(errCode.getMsg(),params);
this.extMsg = this.msg;
}
private void init(ErrorCode errorCode, String param[], String... extMsg) {
this.code = null==errorCode ? "" : errorCode.getCode();
this.msg = null==errorCode ? "" : MessageFormat.format(errorCode.getMsg(),param);
StringBuilder builder = new StringBuilder(100);
builder.append(this.msg);
if(null != extMsg){
for(String ext : extMsg ){
builder.append("[").append(ext).append("]");
}
}
this.extMsg = builder.toString();
}
/**
/**
/**
/**
/**
public String getExtMsg() {
return extMsg;
}
@Override
public String getMessage() {
return super.getMessage() + ","+extMsg;
}
public static void main(String[] args) {
}
}