3. 错误处理
声明
本文收录自: Libuv 源码分析 (3): 错误处理
一、错误号的重定义 1、重定义错误号 Libuv 重定义部分错误号供所有 OS 使用,以 UV__E* 格式命名。如: 1#define UV__EOF (-4095)
一、错误号的重定义
1、重定义错误号
Libuv 重定义部分错误号供所有 OS 使用,以 UV__E* 格式命名。如:
#define UV__EOF (-4095)
2、标准错号
Libuv 将标准错误号对其取负数,构成 UV__* 格式命名的错误号。如:
#if defined(E2BIG) && !defined(_WIN32)
# define UV__E2BIG (-E2BIG)
#else
# define UV__E2BIG (-4093)
#endif
3、EHOSTDOWN 错误号
特别地, Libuv 对 UV__EHOSTDOWN 错误号的定义作如下硬编码处理:
#if defined(EHOSTDOWN) && !defined(_WIN32)
# define UV__EHOSTDOWN (-EHOSTDOWN)
#elif defined(__APPLE__) || \
defined(__DragonFly__) || \
defined(__FreeBSD__) || \
defined(__NetBSD__) || \
defined(__OpenBSD__)
# define UV__EHOSTDOWN (-64)
#else
# define UV__EHOSTDOWN (-4031)
#endif
二、错误处理
部分核心的导出函数以 int uv_* 格式命名,返回 0 表示成功,负数表示失败并对应 UV__E* 错误码。但是,int uv_is_* 和 int uv_has_* 等进行逻辑判断的函数 (或宏) 返回 0 表示 true ,非 0 表示 false ;int uv_*_size 返回是一个长度值。