在C++众多函数库中,防止或检测程序出错的库也有几个,例如断言------cassert(立即退出程序),异常-------exception(立即退出某域)等,其中也有一个很适合在调试中找出具体错误的库-------cerrno(仅显示错误信息)。
对于cerrno库,它可以直接显示出错误的原因,而不需要程序员去寻找出错的原因,可参考以下代码:
#include <iostream>
#include <cerrno>
#include <fstream>
using namespace std;
int main()
{
ifstream i("abc.txt"); //假设目录中没有abc.txt这个文件
if (errno)
cout << strerror(errno); //输出“No such file or directory”
return 0;
}
对于以上代码,errno是一个在cerrno中定义好的一个变量,它的初值是0,表示没有发生错误。但当有错误发生时,它的值就会根据相应的错误进行改变,变为一个非0值,至于是什么错误,可以用strerrno这个函数进行处理,它会返回具体错误的一段字符串解释。有时如果错误并不致命,也并不明显时,可以用这种方法检测一下,就会比较有针对性地找出错误了。