在提供服务的时候,为了方便排查问题,很多时候我们需要把错误信息放在返回信息中返回给请求。
闲话不多说,分享下我的一个错误信息管理类ZSGErrorManage:
错误code:
public static enum ERRORCODE{
ERROR_OK,
ERROR_OTHER,
ERROR_PARAM_ILLEGALITY,
ERROR_UNKNOWN;
}
获取错误message:
public static String getMsgThroughErrorCode(ERRORCODE errorCode, StackTraceElement[] errorStack){
if(errorStack != null){
StringBuffer sBuffer = new StringBuffer();
for(StackTraceElement stackContent : errorStack){
sBuffer.append(stackContent.toString());
}
return sBuffer.toString();
} else {
switch (errorCode) {
case ERROR_OK:
return "ERROR_OK";
case ERROR_OTHER:
return "ERROR_OTHER";
case ERROR_PARAM_ILLEGALITY:
return "ERROR_PARAM_ILLEGALITY";
default:
return "ERROR_UNKNOWN";
}
}
}
错误code就是一个枚举类型,没有什么可说的。
获取错误message是通过传入的错误code以及错误stack信息来返回文字式的错误信息。
可以看到,如果stack不为空,那么错误message就是stack的内容;
反之,如果stack为空,那么根据相应的错误code返回具有标志性的错误message
外部调用举例:
protected final ERRORCODE ERROR_OTHER = ZSGErrorManage.ERRORCODE.ERROR_OTHER;
HeroBaseDto result = new HeroBaseDto();
try {
HeroInfoService service = (HeroInfoService)getBean("heroInfoService");
result = service.getHeroBase();
} catch (Exception e) {
e.printStackTrace();
result.setErrorCode(ERROR_OTHER);
result.setErrorMsg(ZSGErrorManage.getMsgThroughErrorCode(ERROR_OTHER, e.getStackTrace()));
}
注:
e.getStackTrace() 获取错误stack
e.printStackTrace() 在控制台打印错误stack
希望以上内容会对大家有所帮助,谢谢。