C 错误处理学习笔记

概述

在 C 语言中,当程序执行发生错误时会出现一些错误信息。这些错误信息可以被程序员捕获并做出相应的处理。C 语言中的错误处理主要包括两种类型:

  1. 编译时错误: 在编译程序时,如果代码中存在语法错误,则编译器会报告这些错误,并且程序无法生成可执行文件。

  2. 运行时错误:在程序运行过程中,如果程序发生错误,例如除数为0、数组越界等错误,则程序会崩溃或产生意外结果。

本文主要讨论 C 语言中的运行时错误以及如何进行错误处理。

错误处理函数

在 C 语言中,我们可以通过设置错误处理函数来对程序中的错误进行处理。C 语言提供了几个内建的错误处理函数,分别是 abort()exit()assert() 函数。

abort()函数

abort() 函数用于异常终止程序的执行,即使程序没有正常的退出方式也能保证资源得到正确的释放。当程序出现无法继续执行的错误,可以使用 abort() 函数来强制中止程序的执行。

cCopy Code
#include <stdlib.h> void abort(void);

exit()函数

exit() 函数用于正常终止程序的执行。当程序执行完所有的语句后,可以使用 exit() 函数退出程序,同时释放已经分配的资源。

cCopy Code
#include <stdlib.h> void exit(int status);

assert()函数

assert() 函数用于检查程序中的错误。当程序中出现错误时,assert() 函数会终止程序的执行,并打印出错误信息。

cCopy Code
#include <assert.h> void assert(int expression);

错误示例

以下是一些常见的运行时错误示例:

除数为零

cCopy Code
#include <stdio.h> int main() { int a = 10; int b = 0; int c = a / b; // 除数为零,会导致程序崩溃 printf("c = %d", c); return 0; }

数组越界

cCopy Code
#include <stdio.h> int main() { int a[10]; a[11] = 1; // 数组越界,会导致程序崩溃 return 0; }

空指针引用

cCopy Code
#include <stdio.h> int main() { int* p = NULL; int a = *p; // 空指针引用,会导致程序崩溃 printf("a = %d", a); return 0; }

以上是 C 语言中的运行时错误示例,我们可以使用前面介绍的错误处理函数来处理这些错误。