在提供服务的时候,为了方便排查问题,很多时候我们需要把错误信息放在返回信息中返回给请求。
闲话不多说,分享下我的一个错误信息管理类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
希望以上内容会对大家有所帮助,谢谢。
时间: 2024-11-06 14:36:27