如何编写好的错误消息?

MrB*_*les 40 usability custom-errors

虽然这更像是一种书面语言问题而不是编码语言问题,但程序员必须在客户或其他人不提供复制的情况下这样做.任何错误消息的例子,无论好坏,都欢迎指出.

我简短地搜索过,找不到欺骗线程.好的,有它.谢谢,所有.

Sco*_*ham 27

  • 道歉.
  • 说出了什么问题.
  • 说说明如何解决它.
  • 讲礼貌.
  • 该消息应该措辞,以便应用程序承担该问题的责任.永远不要责怪或批评用户或让他们认为这是他们的错.

示例:
"抱歉,无法打开文件.请检查该文件是否已被其他程序打开,然后重试."

如果有其他细节会吓到用户,例如错误编号或其他只有开发人员才能理解的内容,请不要显示它们.将它们写入日志文件,或者有一个可以按下它们的详细信息按钮.

我假设您正在谈论在消息框或屏幕上向用户显示错误消息.

  • 不要过分夸张.用户如何检查文件是否已被其他程序打开?我真的很讨厌警告信息,迫使我在我认为不行的时候按"OK". (3认同)
  • 你正在接受我的具体例子.我认为我提出的观点一般适用.对于这个具体的例子,如果你有更好的措辞,请分享.如果在尝试打开文件时发生这种情况,您不能让程序崩溃或无声地执行任何操作吗? (2认同)
  • 我在用户界面设计的单一课程中学到了这些要点,并回想起它们是基于扎实的研究. (2认同)

Mic*_*ter 12

您是指面向用户还是管理员/开发人员的日志文件?

我认为这些很重要,一般来说:

  • 时间戳
  • 严重程度
  • 出了什么问题
  • 回答"我需要采取行动吗?"的问题.和"如果是这样,采取什么行动?"
  • 开发级详细信息(如果面向用户,则不突出显示)
  • 一致的格式和条款

我认为所有这些都很重要,但突出性将根据观众的变化而变化(正如dmckee指出的那样).另一个提示(一般)是回答5 W(谁,什么,等等)


Joe*_*ico 9

我在一家软件安全公司工作,所以我的答案可能与上面的一些答案有很大的不同.

面向用户的好消息是:

在通用和特定之间保持平衡 - 您希望为用户提供足够的信息以便他们纠正错误并继续前进,但请记住,攻击者可以使用这些相同的错误消息来攻击您的站点.一个很好的例子是登录控件,其中返回错误消息"用户joe的密码不正确"或"此系统中不存在用户joe"这告诉攻击者他们正在发现正确的用户.当你没有用户名或密码时,这就是成功的一半.

告诉用户出了什么问题 - 再次在通用和特定之间取得平衡.用户永远不需要看到ODBC错误消息,但是他们知道错误是您的错误并且他们应该在几分钟内再试一次可能会有所帮助.告诉用户他们可以做些什么来帮助 - 如果你有一个后端日志系统(你应该)记录你认为有用的一切,然后生成一个你可以提供给用户的ID,以便他们可以给你打电话或发电子邮件给你并告诉你确切的repro步骤.您还可以通过在发生错误时公开错误提交表单来自动执行此操作.

保持一致 - 使用错误查找表来确保所有错误都相同(针对同一问题)并且写得很好.在生产软件中不能容忍错别字,拼写错误和语法错误.


Jac*_*esB 8

对于最终用户:告诉用户该做什么.如果用户更改了某些输入值,请在5分钟后重试或致电支持部门?


jff*_*jff 7

一个好的错误消息有三个部分:

  1. 问题 - 解释发生了错误;
  2. 原因 - 解释导致问题的原因;
  3. 解决方案 - 解释如何克服这个问题.

如果您正在编写或查看错误消息,请首先关注写下这三点.即使消息非常长,也不要在第一次写入时担心.您可以随时返回并简化它.

但事实恰恰相反.很难将一条小信息整形成一条清晰解释问题,原因和解决方案的信息.您将不断编辑您的想法以确保消息保持较小,并且在某些时候您将被阻止.是的,我经历过几次这个问题,所以我知道它有多难.

在确保您的邮件包含所有这三个部分后,是时候进行审核了.您需要对其进行编辑以确保它:

  1. 以用户为中心 - 避免使用行话和言语,让观众难以理解;
  2. 直接 - 正如William Strunk所说,"以积极的形式发表言论.避免驯服,无色,犹豫和不承认的语言";
  3. 忽略不必要的词 - 剪切,剪切,剪切.

如您所见,这个框架很简单,不需要太多考虑.

资料来源:


ph3*_*nyx 6

显然,错误预防是最好的.始终为用户提供足够的提示以成功完成任务(即解释数据输入字段所需的格式).但是,"犯错误是人......"(通过将可用性原则应用于Web应用程序中的错误)宽恕是目标.

错误消息有三个基本功能:

1.注意 - 首先,为了确保有效性,用户必须看到它

  • 红色)
  • 字体(大小,重量)
  • 位置(页面顶部,警告框)
  • 焦点(!符号,输入框轮廓)
  • 一致性(在整个应用程序中使用类似的错误消息格式)

2.描述错误 - 告知用户出了什么问题

  • 使用用户理解的简单语言
  • 用客观的声音,不要责怪用户
  • 简明扼要

3.建议恢复 - 提供有用的建议来修复错误并继续

  • 保留用户目前已完成的任何事情
  • 减少纠正它所需的工作
  • 对于登录用户,允许在超时时重新进行身份验证

所有这一切,我很乐意编译更详细的东西,特别是好的和坏的错误消息的例子.