服务端错误编码与提示处理

。错误编码定义
根据应用错误和公共错误分别定义在以下文件:
cqq_error.h: 公共错误.错误编码分配区间:1-3999
slic_error.h: 应用的所有错误定义.错误编码分配区间:5100-7999

。协议处理错误处理
设执行某个协议的处理函数:
int result = HandleA(in,out,or);

result==0,表示成功.非0表示失败。但result不作为错误码,通常返回-1即可.

指定错误码有以下方式:
1.调用SetThreadError,如SetThreadError(CE_NO_EID_AVAILABLE)
2.设置or.err_code_


错误描述可以通过保存在error_code.dat的错误码表文件中.其内容来自错误编码定义文件.
如在slic_error.h增加
#define CE_NO_EID_AVAILABLE 5200 ///< 无可用的企业ID
把此行加入到error_code.dat文件中.
程序只需要指定错误码即可,框架会查找错误描述后返回客户端.


程序也可以自行设置错误描述.如需要参数化信息时.
1.调用SetThreadError
void SetThreadError(long err_code,ENUM_SEVERITY sev,const char *info)
2.指定or.err_msg_


同时指定SetThreadError和DISPATCH_RESULT,采用DISPATCH_RESULT的设置.
建议采用SetThreadError设置错误码和错误描述.

数据库操作失败时框架自动设置为CE_DATABASE,通常不需要程序再设置.
#define CE_DATABASE 2 ///< 数据库操作失败

出错时,如果未指定错误码则框架设置为CE_UNSPECIFED.
#define CE_UNSPECIFED 1 ///< 未指定的错误

程序出错处理:
。函数返回-1或其它非0值
。错误发生时(任何函数,不一定是协议处理函数),SetThreadError错误码,有参数化信息时才设置错误描述信息
。协议处理函数中可利用DISPATCH_RESULT的err_code_,err_msg_设置.---以后不建议这么使用
。如果是数据库操作失败,不需要设置
。查询无结果:并不总是按出错处理。有时预期存在的不存在,可以按错误处理,通常的数据查询若无结果则按成功处理.
。不能取代用于诊断问题的日志信息.如数据库操作底层的错误描述.

猜你喜欢

转载自blog.csdn.net/wherwh/article/details/50042139
今日推荐