Error handling 错误处理:是否显示错误消息?

Error handling 错误处理:是否显示错误消息?,error-handling,software-design,Error Handling,Software Design,通常,在软件设计中,当数据库或文件等资源出现问题或错误时,以下哪种选项是首选选项 显示错误消息 不要显示错误消息,并像资源为空一样操作(例如,不要填充GUI组件)] 例如,用户应该看到一个空的DataGrid,然后投诉,还是应该有一条错误消息?哪个更好?我通常使用的做法是: 如果错误不是由于用户错误而发生的,那么您应该尝试安静地处理错误 如果错误是由于某些外部问题(如没有internet连接)引起的,则应提醒用户 我通常使用的做法是: 如果错误不是由于用户错误而发生的,那么您应该尝试安静地处理错

通常,在软件设计中,当数据库或文件等资源出现问题或错误时,以下哪种选项是首选选项

  • 显示错误消息
  • 不要显示错误消息,并像资源为空一样操作(例如,不要填充GUI组件)]

  • 例如,用户应该看到一个空的DataGrid,然后投诉,还是应该有一条错误消息?哪个更好?

    我通常使用的做法是:

  • 如果错误不是由于用户错误而发生的,那么您应该尝试安静地处理错误
  • 如果错误是由于某些外部问题(如没有internet连接)引起的,则应提醒用户

  • 我通常使用的做法是:

  • 如果错误不是由于用户错误而发生的,那么您应该尝试安静地处理错误
  • 如果错误是由于某些外部问题(如没有internet连接)引起的,则应提醒用户

  • 在我看来,您应该显示一条消息(虽然是一条用户友好的消息,而不是类似“java.io.IOException:Connection timed out”的消息)。您可以有一个消息框,告诉用户在获取数据时发生了错误,并提供一些有用的提示,如:稍后重试、检查网络电缆等。
    还允许用户向您报告该错误(错误报告内置到应用程序中),这将向您发送实际错误和堆栈跟踪。

    IMO您应该显示一条消息(尽管是一条用户友好的消息,而不是类似“java.io.IOException:连接超时”的消息)您可以有一个消息框,告诉用户在获取数据时发生了错误,并提供有用的提示,如:稍后再试、检查网络电缆等。
    还允许用户向您报告该错误(错误报告内置到应用程序中),这将向您发送实际错误和堆栈跟踪。

    每个选项都有一些缺陷

    显示错误消息 这在应用程序处于测试阶段或公共测试时特别有用。此外,当客户遇到错误时,他或她可以复制详细信息并转发给您

    然而,有时这个错误消息变得非常难看(调用堆栈等等,还记得ASP.NET吗?),并且它变得非常大,以至于客户端很难复制详细信息

    不要显示错误消息并表现得好像什么都没发生=) 当您不希望错误消息影响软件UI设计时,这非常有用。但是要提醒的是,当客户端无法区分GUI上的实际错误或什么都没有时,这将变得很困难,并且更容易出错。错误仍然存在,并且没有得到修复

    我的立场 两全其美。事实上,大多数现代应用程序都有很好的错误处理过程。我将以Mozilla Firefox 3为例

  • 发生致命错误,Firefox崩溃
  • 错误被捕获并以错误报告的形式存储到文件中
  • 错误报告应用程序弹出,向用户道歉
  • 询问用户是否希望将错误报告发送给软件开发团队
  • 然后询问用户是否要重新启动应用程序
  • 或者,如果错误是警告或严重程度较低:

    显示一个简单的错误代码,并告诉用户该操作存在错误。类似于:“RequestSalary()第2行出现错误123”

    每个选项都有一些缺陷

    显示错误消息 这在应用程序处于测试阶段或公共测试时特别有用。此外,当客户遇到错误时,他或她可以复制详细信息并转发给您

    然而,有时这个错误消息变得非常难看(调用堆栈等等,还记得ASP.NET吗?),并且它变得非常大,以至于客户端很难复制详细信息

    不要显示错误消息并表现得好像什么都没发生=) 当您不希望错误消息影响软件UI设计时,这非常有用。但是要提醒的是,当客户端无法区分GUI上的实际错误或什么都没有时,这将变得很困难,并且更容易出错。错误仍然存在,并且没有得到修复

    我的立场 两全其美。事实上,大多数现代应用程序都有很好的错误处理过程。我将以Mozilla Firefox 3为例

  • 发生致命错误,Firefox崩溃
  • 错误被捕获并以错误报告的形式存储到文件中
  • 错误报告应用程序弹出,向用户道歉
  • 询问用户是否希望将错误报告发送给软件开发团队
  • 然后询问用户是否要重新启动应用程序
  • 或者,如果错误是警告或严重程度较低:

    显示一个简单的错误代码,并告诉用户该操作存在错误。类似于:“RequestSalary()第2行出现错误123”

    我不认为这是非此即彼。另外,我们需要考虑系统中的所有“用户”。 首先考虑UI。让我们考虑一个人为的一般情况:您通过调用一个服务来填充UI,该服务又使用了两个数据库(例如“当前数据”和“历史数据”)数据库。p> 至少有以下几种可能性:

    • 一切正常,数据被检索
    • 这一切都是可行的,但碰巧没有这个特定查询的数据
    • 联系不到服务台
    • 服务被调用,但一个数据库关闭
    • 已调用服务,但两个数据库都已关闭

    还要考虑应用程序的语义。如果无法检索所有数据,您的应用程序能否以“降级”模式运行?例如,我们无法查询历史记录,但这不会阻止我们创建新项目

    现在也要考虑这里的角色。有人使用UI,也有支持和维护人员需要了解和解决问题

    我的