英文原版 P627
虽然初学者的程序在遇到异常输入时会经常无法运行,但是商业级程序必须很强壮:能够从错误中优雅地恢复正常,而不是崩溃。
使程序变得强壮要求我们能预测在程序运行时可能出现的错误。这包括对每个错误进行检查,提供错误发生时的处理方式。
本章介绍两种用于检查错误的方式:
- 使用
assert
宏; - 测试
errno
变量;
本章的主要内容有:
- 24.1节介绍头文件
<assert.h>
。 - 24.2节介绍头文件
<errno.h>
,及两个跟errno
紧密相关的函数:perror
和strerror
等。 - 24.3节介绍如何检测和处理被称为“信号”的条件,其中某些信号用于表示错误,处理信号的函数定义在
<signal.h>
中。 - 22.4节探讨了
setjmp/longjmp
机制,该机制经常用于响应错误,其中setjmp
和longjmp
都在头文件<setjmp.h>
中。
注1:
错误检测和处理不是C语言的强项,因为
- C语言用多种方式而不是统一的方式来表示运行时错误。
- 在C语言中,由程序员来负责编写错误检测代码的。这样很容易忽略可能发生的错误。
注2:
诸如C++、Java、C#等较新的语言都具有“异常处理”特性,使得检测错误和响应错误变得更容易。