当UNIX函数出错时,常常返回一个负值,而且整型变量errno被赋值为一个含有附加信息的编码。
errno 作为一个整型左值,可以是一个整型变量,也可以是一个返回整型指针的函数。
多线程环境中用
extern int *__errno_localtion(); #define errno (*__errno_location())
取代了早期的
extern int errno;
我们可以用
char *strerror(int errnum)
函数获取错误信息字符串形式。
很多C模块的错误提示都继承了这一思路,这里提供了一个小DEMO
enum add_error{ add_error_success, add_error_invalid, add_error_overflow, }; static int errno_add; static const char *add_error_str[] = { "success", "the param is invalid", "the result is overflow" }; int add(int a,int b) { if(a < 0|| b < 0){ errno_add = add_error_invalid; return -1; } if(a > 100 || b > 100){ errno_add = add_error_overflow; return -1; } return a+b; } int add_error_get() { return errno_add; } const char *add_error_desc(int err) { return add_error_str[err]; }
关于错误处理
致命错误: 打印错误日志,结束进程。
资源性非致命错误:过一段时间,重试。
时间: 2024-11-05 19:29:57