15.错误处理
约 398 字大约 1 分钟
C语言本身并不像一些高级编程语言那样具有内建的异常处理机制(如 C++ 中的 try-catch)。
因此,C 语言的错误处理主要通过以下几种方式来实现:
1. 使用返回值来报告错误
2. 使用 errno 来获取错误信息
C 语言标准库提供了一个全局变量 errno,它用于保存最近的错误码。
当标准库函数失败时,通常会设置 errno 变量,以便你在后续的代码中可以查询错误类型。需要包含头文件 <errno.h>。
errno 是一个全局变量,因此每次调用失败后,errno 的值会被更新。
通过查阅 errno.h 中定义的常量,可以确定错误的类型。
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
int main() {
FILE *file = fopen("non_existent_file.txt", "r");
if (file == NULL) {
// 使用 errno 获取错误代码并打印错误信息
printf("Error opening file: %s\n", strerror(errno));
return 1;
}
// 正常的文件操作(略)
fclose(file);
return 0;
}
3. 使用 assert 来进行调试时的错误检查
assert 是 C 语言中一个用于调试的宏,它可以检查表达式是否为真。
如果表达式为假,程序会终止,并输出错误信息(文件名和行号)。
这通常用于在开发过程中检查不应该发生的错误。
#include <stdio.h>
#include <assert.h>
int divide(int a, int b) {
assert(b != 0); // 检查除数是否为零
return a / b;
}
int main() {
int result = divide(10, 0); // 这将触发断言失败
printf("Result: %d\n", result);
return 0;
}