首页 > 代码库 > 接口服务错误管理(将错误堆栈返回给请求)的实现

接口服务错误管理(将错误堆栈返回给请求)的实现

在提供服务的时候,为了方便排查问题,很多时候我们需要把错误信息放在返回信息中返回给请求。

闲话不多说,分享下我的一个错误信息管理类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



希望以上内容会对大家有所帮助,谢谢。


接口服务错误管理(将错误堆栈返回给请求)的实现