我想知道对错误消息的一般共识是什么。它们应该有多详细?
我参与了一些项目,其中有一个不同的错误消息,用于输入太大,太小,有小数,是字符串等的数字。这对用户来说非常好,因为他们确切知道哪里事情出错了,但错误处理代码开始与实际业务逻辑大小相媲美,并开始开发一些自己的错误。
另一方面,我参与了一个项目,你会得到非常一般的错误,比如
编制失败的原因3
不用说,几乎完全没用,因为原因3意味着链接错误。
那么中间地带在哪里?我怎么知道我是否添加了足够描述性的错误消息?我怎么知道用户是否能够理解他们出错的地方?
答案 0 :(得分:12)
错误消息,用户和开发人员有两种可能的目标受众。
通常应该让消息以用户为目标。
问题是什么原因造成的。如果要报告问题,报告应包含尽可能多的程序上下文信息。
o模块名称
o功能名称
o行号
o问题的一般领域中感兴趣的变量
甚至可能是核心转储。
定位正确的受众群体。
答案 1 :(得分:4)
您应该尽可能少地传达所发生的事情以及用户的选择。错误消息越长,用户阅读它的可能性就越小。出于同样的原因,短错误消息是神秘而无用的。在长度方面有一个最佳点,并且在每种情况下都有所不同。
太短了:
输入无效。
太长了:
请输入格式正确的IP地址,例如192.168.0.1。 IP地址是用于在网络上识别您的计算机的编号。
恰到好处:
请输入有效的IP地址。
就代码膨胀而言,如果一些额外的代码会阻止用户调用支持或沮丧,那么这是一个很好的投资。
答案 2 :(得分:3)
有两种类型的错误消息:用户可以看到的消息和程序员可以看到的消息。
“我如何知道用户是否能够了解他们出错的地方?”
我假设这些消息只会被用户看到,而不是非常技术性的消息,COMPILE FAILED REASON 3
不是典型的最终用户错误消息。这是程序员将看到的东西(用户通常不会编译东西)。
所以,如果用户会看到它:
最后,为用户提供一些简单易懂的命令(“再试一次”,“取消”等)。
答案 3 :(得分:2)
关于错误消息的真正问题是它们是否应该显示。很多错误消息都会呈现给用户,但他们没有办法纠正它们。
只要有办法纠正错误,然后向用户提供足够的信息,以便他们自己纠正错误。如果他们无法自行纠正它是否有任何理由告诉他们崩溃的技术原因?不要只是将其记录到文件中以便以后进行故障排除。
答案 4 :(得分:2)
尽可能详细;)
我知道这听起来像是一个自作聪明答案,但这很大程度上取决于您的目标受众和错误类型。对于由无效用户输入引起的错误,您可以向他们显示构成有效条目的内容。对于用户无法控制的错误,通用的“我们正在处理它”类型的消息可能会这样做。
我同意Jon B关于长度的评论。
答案 5 :(得分:1)
错误消息应该详细,但要清楚。这可以通过组合来自多个级别的错误消息来实现:
Failed to save the image
Permission denied: /foo.jpg
这里我们有两个级别。可以有更多。首先,我们告诉大局,然后我们告诉细节。顺序是这样的,首先我们有大部分人理解的部分,然后是人们不太了解的部分,但两者仍然是可见的。
另外可能有修复建议。
答案 6 :(得分:0)
我会更偏向于更详细,但我认为你回答了自己的问题。为避免代码中的膨胀,请在代码/错误消息中提供有用的信息,但您可以在文档中提供更多详细信息,也可以使用帮助文件或常见问题解答。
在我看来,信息太少会更糟糕。如果您使用的是具有丰富内省或其他功能的语言,那么对于未通过检查的行而言,该日志将非常有用。然后,用户可以转发技术支持或获取详细信息,这不是额外的代码膨胀,而是使用您自己的代码来提供信息。