C 错误处理
C 语言没有异常机制,错误处理主要通过返回码、全局变量 errno 与信号等方式实现。本章介绍常见的错误处理模式与最佳实践。
1. 返回码模式
多数 C 标准库函数使用特殊返回值表示错误:
2. errno 全局变量
在 <errno.h> 中定义,许多系统调用出错时会设置 errno:
3. 设计返回码约定
- 成功通常返回 0 或正值
- 失败返回负值或特殊值(如 -1、NULL)
- 通过指针参数返回实际结果
4. 错误传播与清理
5. 断言(assert)
用于调试时检查程序假设:
发布版本通过 #define NDEBUG 禁用断言。
6. 信号处理(signal.h)
用于异步事件处理,如段错误、中断等:
7. 小结
C 的错误处理需要程序员自律:检查返回值、合理设计错误码、及时清理资源,并在适当场合使用断言与信号。