首页 > 代码库 > 错误码设计
错误码设计
1. 获取错误码描述信息
2. 获取错误码字符串表示
/**统一格式:A-BB-CC A:错误级别,如1代表系统级错误,2代表服务级错误; B:项目或模块名称; C:具体错误编号*/ /**错误代码说明 (20502) 2: 服务级错误(1为系统级错误) 05: 服务模块代码 02: 具体错误代码*/ #define UV_ERRNO_MAP(XX) \ XX( 0, UNKNOWN, "unknown error") XX( 1, OK, "success") XX(10201, SYS_EOF, "end of file") XX(10202, SYS_INVALID_SOCKET, "invalid socket fd") XX(10401, CLI_INVALID_PASSWORD, "invalid password") /** 枚举 */ #define UV_ERRNO_GEN(val, name, s) UV_##name = val, typedef enum { UV_ERRNO_MAP(UV_ERRNO_GEN) UV_MAX_ERRORS } uv_result_code; #undef UV_ERRNO_GEN #define UV_STRERROR_GEN(val, name, s) case UV_##name : return s; /** 获取错误码描述 */ const char* uv_code_desc(uv_result_code code) { switch (code) { UV_ERRNO_MAP(UV_STRERROR_GEN) default: return "unknown error"; } } #undef UV_STRERROR_GEN #define UV_ERR_NAME_GEN(val, name, s) case UV_##name : return #name; /** 获取错误码名称 */ const char* uv_code_name(uv_result_code code) { switch (code) { UV_ERRNO_MAP(UV_ERR_NAME_GEN) default: return "unknown name"; } } #undef UV_ERR_NAME_GEN int main(int argc, char* argv[]) { uv_result_code code = uv_result_code::UV_SYS_EOF; const char* name = uv_code_name(code); const char* desc = uv_code_desc(code); return 0; }
参考:
https://github.com/libuv/libuv/blob/v1.x/src/uv-common.c
https://www.zhihu.com/question/24091286
错误码设计
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。