C/C++ 常见错误处理机制与实战指南
在 C/C++ 编程里,错误信息的捕获和处理是保证程序健壮性的关键一环。通常我们依赖函数的返回值或全局变量 errno 来感知异常。为了调试方便和错误处理规范化,标准库提供了一系列函数和方法来获取并输出错误信息。
errno 与 perror()
errno 是一个全局变量,当系统调用或库函数失败时,操作系统会将其设置为特定的错误代码。每个代码对应一种具体的错误类型。
perror() 则负责将 errno 的值转换为可读的错误消息并输出到标准错误流。如果提供了自定义前缀字符串,它也会一并打印出来。
#include <stdio.h>
#include <errno.h>
#include <string.h>
int main() {
FILE *file = fopen("non_existent_file.txt", "r");
if (!file) {
perror("File opening failed");
}
return 0;
}
运行上述代码,若文件不存在,终端会显示类似 File opening failed: No such file or directory 的输出。这里 perror() 自动读取了 errno 中设置的'没有这样的文件或目录'信息。
strerror() 函数
strerror() 的作用是将 errno 错误代码转换为可读的字符串指针。相比 perror(),它的灵活性更高,允许你在程序中直接控制输出的位置和格式。
#include <stdio.h>
#include <errno.h>
#include <string.h>
int main() {
FILE *file = fopen("non_existent_file.txt", );
(!file) {
(, (errno));
}
;
}


