作为一名优秀的程序员,应该编写能处理其程序每个结果的强大代码。但是,当发生错误时,C库中的几乎所有函数都将返回0或-1或NULL。
有时很明显,需要进行错误检查,例如,当您尝试打开文件时。但是我经常忽略诸如printf
或什至malloc
因为我认为没有必要而进行错误检查。
if(fprintf(stderr, "%s", errMsg) < 0){
perror("An error occurred while displaying the previous error.");
exit(1);
}
仅忽略某些错误是一种好习惯,还是有一种更好的方法来处理所有错误?
try
语句覆盖许多行中的许多错误,包括被调用的函数和方法,因此您不必检查每个调用或操作。(还要注意,某些语言在检测简单错误(例如空解除引用或数组索引超出范围)方面比其他语言更好。)
errno
!如果您不熟悉,虽然确实是“ C库中的几乎所有函数都将返回0或−1或NULL
发生错误时”,但它们也会设置全局errno
变量,您可以使用进行访问#include <errno.h>
,然后简单地读取的价值errno
。因此,例如,如果open
(2)返回-1
,则您可能需要检查是errno == EACCES
,这将指示权限错误,还是ENOENT
,这将指示请求的文件不存在。
try
/ catch
,尽管您可以通过跳转来模拟它。