在 C 中的无效用户输入时应该返回哪个 errno?

问题描述

假设我有一个 C 语言程序,我要求用户输入一个 1 到 3 之间的数字。如果用户选择了一个超出范围的数字,那么 errno 最适合在我的函数中返回?

解决方法

我不会将 errno 用于像这样的简单的面向用户的功能。 errno 主要用于报告低级 I/O、进程和其他操作系统错误的系统调用。它不是为糟糕的键盘输入、不正确的文件内容或超出范围的值而设计的。当用户库使用它时,通常是当他们将内部系统错误转发给调用者并且不想费心创建一个不透明的错误机制来包装 errno 时。

例如,JSON 库或 TLS 加密库可能会从它们执行的任何失败的 I/O 调用中转发 errno 值。多处理库可能会从失败的 fork/clone 系统调用转发 errno 值。

也就是说,如果您仍然想使用 errno,EINVAL Invalid Argument 是合理的。

,

没有“最合适的”错误编号,本身

0 表示没有错误。任何非 0 表示存在错误。但是因为每个程序都是独一无二的,可能与该程序相关的错误也是独一无二的。

作为程序员,您确定错误代码的含义,然后通过提供文档将其传达给最终用户。真的就是这么简单(而且灵活)。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...