如何优雅的定义错误码

本文参考:libhv源码herr.h
在项目过程中难免自定义错误码并且给出错误提示信息方便我们排查,类似VS的错误查找工具。

常规定义错误码:不建议,每次新增错误码都必须维护strerror,相对繁琐
#defind ERR_OK 1000//OK
#defind ERR_UNKNOW 1001//unknown
#defind ERR_PARAMS_INVALID 1002//params invalid

const char *strerror(int errcode)
{
	switch(errcode)
	{
		case ERR_OK:return "OK";
		case ERR_UNKNOW:return "unknown error";
		case ERR_PARAMS_INVALID:return "params invalid";
		default:
			return "unknown error";
	}
}
优雅定义错误码:推荐方法,不用维护strerror。
//定义错误码的宏,维护错误码和信息描述
#define ERR_CODE(F)\
	F(1000,OK,"OK")\
	F(1001,UNKNOWN,"Unknown error")\
	F(1002,PARAMS_INVALID, "Params invalid")

//通过枚举定义错误码
//此时会生成错误码ERR_OK=1000,ERR_UNKNOWN=1001,ERR_PARAMS_INVALID=1002的错误码
enum eErrCode{
#define FECODE(code,name,msg) ERR_##name=code,
	ERR_CODE(FECODE)
};

//返回错误信息
const char* strerror(int err_code)
{
	switch (err_code)
	{
#define FERRSTR(code,name,msg) case code:{return msg;}
		ERR_CODE(FERRSTR);
	default:
		break;
	}
	return "";
}

错误码信息打印:

error = strerror(ERR_OK);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值