错误消息的详细程度如何?

时间:2008-12-31 16:12:56

标签: user-interface error-handling custom-errors

我想知道对错误消息的一般共识是什么。它们应该有多详细?

我参与了一些项目,其中有一个不同的错误消息,用于输入太大,太小,有小数,是字符串等的数字。这对用户来说非常好,因为他们确切知道哪里事情出错了,但错误处理代码开始与实际业务逻辑大小相媲美,并开始开发一些自己的错误。

另一方面,我参与了一个项目,你会得到非常一般的错误,比如

  

编制失败的原因3

不用说,几乎完全没用,因为原因3意味着链接错误。

那么中间地带在哪里?我怎么知道我是否添加了足够描述性的错误消息?我怎么知道用户是否能够理解他们出错的地方?

7 个答案:

答案 0 :(得分:12)

错误消息,用户和开发人员有两种可能的目标受众。

通常应该让消息以用户为目标。

问题是什么原因造成的。
 o为什么程序无法解决问题  o用户可以做些什么来解决问题  o如何报告问题。

如果要报告问题,报告应包含尽可能多的程序上下文信息。

o模块名称
 o功能名称
 o行号
 o问题的一般领域中感兴趣的变量
 甚至可能是核心转储。

定位正确的受众群体。

答案 1 :(得分:4)

您应该尽可能少地传达所发生的事情以及用户的选择。错误消息越长,用户阅读它的可能性就越小。出于同样的原因,短错误消息是神秘而无用的。在长度方面有一个最佳点,并且在每种情况下都有所不同。

太短了:

  

输入无效。

太长了:

  

请输入格式正确的IP地址,例如192.168.0.1。 IP地址是用于在网络上识别您的计算机的编号。

恰到好处:

  

请输入有效的IP地址。

就代码膨胀而言,如果一些额外的代码会阻止用户调用支持或沮丧,那么这是一个很好的投资。

答案 2 :(得分:3)

有两种类型的错误消息:用户可以看到的消息和程序员可以看到的消息。

“我如何知道用户是否能够了解他们出错的地方?” 我假设这些消息只会被用户看到,而不是非常技术性的消息,COMPILE FAILED REASON 3不是典型的最终用户错误消息。这是程序员将看到的东西(用户通常不会编译东西)。

所以,如果用户会看到它:

  1. 提供简短的“这是一条错误消息”(“Ops!出了问题!”等)。
  2. 提供错误的小型通用描述(“您尝试连接的网站似乎不可用”/“您似乎没有足够的权限来执行XYZ任务”/等。)
  3. 添加“详细信息>>”按钮,以防您的用户碰巧理解计算机,包括详细信息(异常堆栈跟踪,错误代码等)。
  4. 最后,为用户提供一些简单易懂的命令(“再试一次”,“取消”等)。

答案 3 :(得分:2)

关于错误消息的真正问题是它们是否应该显示。很多错误消息都会呈现给用户,但他们没有办法纠正它们。

只要有办法纠正错误,然后向用户提供足够的信息,以便他们自己纠正错误。如果他们无法自行纠正它是否有任何理由告诉他们崩溃的技术原因?不要只是将其记录到文件中以便以后进行故障排除。

答案 4 :(得分:2)

尽可能详细;)

我知道这听起来像是一个自作聪明答案,但这很大程度上取决于您的目标受众和错误类型。对于由无效用户输入引起的错误,您可以向他们显示构成有效条目的内容。对于用户无法控制的错误,通用的“我们正在处理它”类型的消息可能会这样做。

我同意Jon B关于长度的评论。

答案 5 :(得分:1)

错误消息应该详细,但要清楚。这可以通过组合来自多个级别的错误消息来实现:

Failed to save the image
Permission denied: /foo.jpg

这里我们有两个级别。可以有更多。首先,我们告诉大局,然后我们告诉细节。顺序是这样的,首先我们有大部分人理解的部分,然后是人们不太了解的部分,但两者仍然是可见的。

另外可能有修复建议。

答案 6 :(得分:0)

我会更偏向于更详细,但我认为你回答了自己的问题。为避免代码中的膨胀,请在代码/错误消息中提供有用的信息,但您可以在文档中提供更多详细信息,也可以使用帮助文件或常见问题解答。

在我看来,信息太少会更糟糕。

如果您使用的是具有丰富内省或其他功能的语言,那么对于未通过检查的行而言,该日志将非常有用。然后,用户可以转发技术支持或获取详细信息,这不是额外的代码膨胀,而是使用您自己的代码来提供信息。