prev up next   top/contents search

comp.lang.c FAQ 列表· 问题 20.4

使用errno?


的正确方法是什么?一般来说,您应该通过检查返回值来检测错误,并且只使用errno来区分错误的各种原因,例如“文件未找到”或“权限被拒绝”。(通常,您使用perrorstrerror来打印这些区分性的错误消息。)只有当一个函数没有唯一的、明确的、带外错误返回时(即因为所有可能的返回值都是有效的;一个例子是errnoatoi),才需要使用来检测错误。在这些情况下(并且仅在这些情况下;请检查文档以确保函数是否允许这样做),您可以通过将errno设置为 0,调用该函数,然后测试errno。(首先将errno设置为 0 也很重要,因为没有任何库函数会为您这样做。)

为了使错误消息有用,它们应该包含所有相关信息。除了从strerror派生的文本errno之外,还可能需要打印程序的名称,失败的操作(最好用对用户有意义的术语表示),操作失败的文件的名称,以及如果正在读取某个输入文件(脚本或源文件),则打印该文件的名称和当前行号。

另请参阅问题 12.24

参考:ISO 第 7.1.4 节,第 7.9.10.4 节,第 7.11.6.2 节
CT&P 第 5.4 节,第 73 页
PCS 第 11 节,第 168 页,第 14 节,第 254 页


prev up next   contents search
关于此 FAQ 列表   关于 Eskimo   搜索   反馈   版权

Eskimo North 托管