当前位置:嗨网首页>书籍在线阅读

08-处理来自库函数的错误

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

处理来自库函数的错误

不同的库函数在调用发生错误时,返回的数据类型和值也各不相同。(参见每个函数的手册页。)从错误处理的角度来说,可将库函数划分为以下几类。

  • 某些库函数返回错误信息的方式与系统调用完全相同——返回值为−1,伴之以errno号来表示具体错误。remove()便是其中一例,可使用该函数来删除文件(调用unlink()系统调用)或目录(调用rmdir()系统调用)。对此类函数所发生的错误进行诊断,其方式与系统调用完全相同。
  • 某些库函数在出错时会返回−1之外的其他值,但仍会设置errno来表明具体的出错情况。例如,fopen()在出错时会返回一个NULL指针,还会根据出错的具体底层系统调用来设置errno。函数perror()和strerror()都可用来诊断此类错误。
  • 还有些函数根本不使用errno。对此类函数来说,确定错误存在与否及其起因的方法各不相同,可见诸于相应函数的手册页中,不应使用errno、perror()或strerror()来诊断错误。