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

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

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



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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值