Exception handling 向普通用户发送的错误消息中有多少信息?

Exception handling 向普通用户发送的错误消息中有多少信息?,exception-handling,Exception Handling,我想知道如何在我的web应用程序中处理最终用户可见的错误消息 你提供了多少信息 错误消息 是否重定向所有错误, 无论类型如何,都会导致常见错误 页面,还是有一小部分页面(404403,所有其他页面) 您是否提供了用户需要的错误代码 我只能向你推荐那个吗 你明白吗 你有没有提供任何技术细节 正如我所说,我的用户是非技术性的普通用户。向用户显示一个不错的错误,自己记录一个详细的错误。我尝试执行以下操作: 确保您永远不会遇到密码或连接字符串出现在错误消息中的风险 确保将错误记录到持久介质中。我更喜

我想知道如何在我的web应用程序中处理最终用户可见的错误消息

  • 你提供了多少信息 错误消息

  • 是否重定向所有错误, 无论类型如何,都会导致常见错误 页面,还是有一小部分页面(404403,所有其他页面)

  • 您是否提供了用户需要的错误代码 我只能向你推荐那个吗 你明白吗

  • 你有没有提供任何技术细节


正如我所说,我的用户是非技术性的普通用户。

向用户显示一个不错的错误,自己记录一个详细的错误。

我尝试执行以下操作:

  • 确保您永远不会遇到密码或连接字符串出现在错误消息中的风险
  • 确保将错误记录到持久介质中。我更喜欢数据库,这样我就可以按时间范围和其他参数进行查询。我不记录404
  • 如果应用程序是一个不需要美观的内部应用程序,那么可以在页面上显示错误信息。即使您正在记录这些内容,也可以让您的用户通过电子邮件向您发送屏幕截图或复制/粘贴
  • 如果3看起来令人讨厌,请将一些错误信息写成HTML注释。然后,您至少可以通过查看源来查看信息

  • 一般来说,我会尽量给用户提供所需的信息,帮助他们自己解决问题。例如,在404的情况下,您可能希望让他们再次检查他们正在查找的URL是否正确


    它们显然不需要堆栈跟踪等,但将该级别的详细信息记录到某个位置以进行诊断和调试是有意义的。

    对于致命错误,请保持简短,以便他们可以通过电话或电子邮件重复这些错误:无法连接到数据库等

    对于非致命错误,请完整描述条件:错误,没有发票日期无法保存发票


    我还总是记录所有内容,函数的参数和任何可能有用的内部值。

    我尝试向用户显示足够的信息,让他们知道这是一个他们需要告诉别人的问题,但尽量避免向他们显示太多以至于吓到他们


    如果可能的话,错误消息应该告诉他们刚才失败了什么,例如他们的保存失败了,或者保存得很好,但是之后屏幕的刷新出现了问题。额外的错误信息(如堆栈跟踪)应记录在某个地方,以便用户无需将其发送给您即可获取

    当涉及到为最终用户显示错误时,我发现显示错误代码(这样我和管理员就知道是什么错误)和典型的“如果出现问题,请与管理员联系”是一种很好的做法


    对于可能导致用户操作的常见错误,最好提供更多的信息。但是,通常太多的信息会吓唬或迷惑用户。

    您的web应用程序的错误消息应该始终(至少) 至少)是这3个问题的答案(按顺序):

  • 发生了什么事

  • 为什么会这样

  • 对此我们能做些什么

  • 我已经用了很多年了,最初是从苹果的 “人机界面指南:苹果桌面界面”。 微软有

    这也使得编写它们变得容易,这是结构化的 这种方法使编写它们的速度更快 回答问题

    错误消息也应该是特定的。任何信息 web应用程序知道并且用户可以 需要解决的问题应出现在错误消息中。 (臭名昭著的)错误消息“一个错误发生了。”很简单 不可接受

    可选:用户可能不知道的更多技术信息 理解可以放在最后。但它应该被标记
    因此。

    无,只需显示并提供一个参考号,用户就可以将其提供给您,您可以从应用程序日志中查看详细信息(显然,您需要保留一份错误日志)。

    通常,您的web应用程序框架会为您处理很多这方面的问题。您使用的是什么框架?@S.Lott,假设他使用的是框架,那么使用的框架可能是“错误的”。我敢打赌,没有一个框架能把所有事情都做好,即使你的框架提供了错误处理之类的功能,问一下也是很好的。@s.Lott:我使用的是ASP.NET MVC。