Error handling 错误处理:是否显示错误消息?
通常,在软件设计中,当数据库或文件等资源出现问题或错误时,以下哪种选项是首选选项Error handling 错误处理:是否显示错误消息?,error-handling,software-design,Error Handling,Software Design,通常,在软件设计中,当数据库或文件等资源出现问题或错误时,以下哪种选项是首选选项 显示错误消息 不要显示错误消息,并像资源为空一样操作(例如,不要填充GUI组件)] 例如,用户应该看到一个空的DataGrid,然后投诉,还是应该有一条错误消息?哪个更好?我通常使用的做法是: 如果错误不是由于用户错误而发生的,那么您应该尝试安静地处理错误 如果错误是由于某些外部问题(如没有internet连接)引起的,则应提醒用户 我通常使用的做法是: 如果错误不是由于用户错误而发生的,那么您应该尝试安静地处理错
例如,用户应该看到一个空的DataGrid,然后投诉,还是应该有一条错误消息?哪个更好?我通常使用的做法是:
我通常使用的做法是:
在我看来,您应该显示一条消息(虽然是一条用户友好的消息,而不是类似“java.io.IOException:Connection timed out”的消息)。您可以有一个消息框,告诉用户在获取数据时发生了错误,并提供一些有用的提示,如:稍后重试、检查网络电缆等。
还允许用户向您报告该错误(错误报告内置到应用程序中),这将向您发送实际错误和堆栈跟踪。IMO您应该显示一条消息(尽管是一条用户友好的消息,而不是类似“java.io.IOException:连接超时”的消息)您可以有一个消息框,告诉用户在获取数据时发生了错误,并提供有用的提示,如:稍后再试、检查网络电缆等。
还允许用户向您报告该错误(错误报告内置到应用程序中),这将向您发送实际错误和堆栈跟踪。每个选项都有一些缺陷 显示错误消息 这在应用程序处于测试阶段或公共测试时特别有用。此外,当客户遇到错误时,他或她可以复制详细信息并转发给您 然而,有时这个错误消息变得非常难看(调用堆栈等等,还记得ASP.NET吗?),并且它变得非常大,以至于客户端很难复制详细信息 不要显示错误消息并表现得好像什么都没发生=) 当您不希望错误消息影响软件UI设计时,这非常有用。但是要提醒的是,当客户端无法区分GUI上的实际错误或什么都没有时,这将变得很困难,并且更容易出错。错误仍然存在,并且没有得到修复 我的立场 两全其美。事实上,大多数现代应用程序都有很好的错误处理过程。我将以Mozilla Firefox 3为例
显示一个简单的错误代码,并告诉用户该操作存在错误。类似于:“RequestSalary()第2行出现错误123”每个选项都有一些缺陷 显示错误消息 这在应用程序处于测试阶段或公共测试时特别有用。此外,当客户遇到错误时,他或她可以复制详细信息并转发给您 然而,有时这个错误消息变得非常难看(调用堆栈等等,还记得ASP.NET吗?),并且它变得非常大,以至于客户端很难复制详细信息 不要显示错误消息并表现得好像什么都没发生=) 当您不希望错误消息影响软件UI设计时,这非常有用。但是要提醒的是,当客户端无法区分GUI上的实际错误或什么都没有时,这将变得很困难,并且更容易出错。错误仍然存在,并且没有得到修复 我的立场 两全其美。事实上,大多数现代应用程序都有很好的错误处理过程。我将以Mozilla Firefox 3为例
显示一个简单的错误代码,并告诉用户该操作存在错误。类似于:“RequestSalary()第2行出现错误123”我不认为这是非此即彼。另外,我们需要考虑系统中的所有“用户”。 首先考虑UI。让我们考虑一个人为的一般情况:您通过调用一个服务来填充UI,该服务又使用了两个数据库(例如“当前数据”和“历史数据”)数据库。p> 至少有以下几种可能性:
- 一切正常,数据被检索
- 这一切都是可行的,但碰巧没有这个特定查询的数据
- 联系不到服务台
- 服务被调用,但一个数据库关闭
- 已调用服务,但两个数据库都已关闭
还要考虑应用程序的语义。如果无法检索所有数据,您的应用程序能否以“降级”模式运行?例如,我们无法查询历史记录,但这不会阻止我们创建新项目
现在也要考虑这里的角色。有人使用UI,也有支持和维护人员需要了解和解决问题
我的