Exception 什么';写错误处理的好方法是什么?

Exception 什么';写错误处理的好方法是什么?,exception,exception-handling,error-handling,Exception,Exception Handling,Error Handling,我讨厌写错误条件代码。我想我没有一个好的方法来做这件事: 你是否写下了所有的“功能” 先编写代码,然后返回并添加 错误处理,反之亦然 你认为你的用户有多愚蠢 是吗 您的产品颗粒度如何 异常抛出 有没有人有明智的建议可以让这变得更容易 很多很好的答案,伙计们,谢谢。事实上,我得到的关于与用户打交道的答案比我想象的要多。实际上,我更感兴趣的是后端的错误处理,处理数据库连接故障和前端的潜在影响,等等。让它们继续吧 假设你的用户什么都不知道,会以任何可能的方式破坏你的系统 然后编写相应的错误处理代码

我讨厌写错误条件代码。我想我没有一个好的方法来做这件事:

  • 你是否写下了所有的“功能” 先编写代码,然后返回并添加 错误处理,反之亦然
  • 你认为你的用户有多愚蠢 是吗
  • 您的产品颗粒度如何 异常抛出
有没有人有明智的建议可以让这变得更容易


很多很好的答案,伙计们,谢谢。事实上,我得到的关于与用户打交道的答案比我想象的要多。实际上,我更感兴趣的是后端的错误处理,处理数据库连接故障和前端的潜在影响,等等。让它们继续吧

假设你的用户什么都不知道,会以任何可能的方式破坏你的系统


然后编写相应的错误处理代码。

假设您的用户什么都不知道,并且会以任何可能的方式破坏您的系统


然后编写相应的错误处理代码。

您必须假设您的用户非常愚蠢。总有人会想办法给你一些你认为永远不会发生的建议

我试图使异常抛出尽可能细化,以便在出现问题时提供最佳反馈。如果你把所有的事情都放在一起,你就不能分辨出是哪个错误导致了问题


我通常先尝试处理错误案例(在获得功能代码之前),但这不一定是最佳实践。

你必须假设你的用户非常愚蠢。总有人会想办法给你一些你认为永远不会发生的建议

我试图使异常抛出尽可能细化,以便在出现问题时提供最佳反馈。如果你把所有的事情都放在一起,你就不能分辨出是哪个错误导致了问题


我通常先尝试处理错误案例(在获得功能代码之前),但这不一定是最佳做法。

我可以回答一个问题:你不需要假设你的用户“愚蠢”,你需要帮助他们使用你的应用程序。为事情显示漂亮的提示,验证数据并解释原因,这对他们来说很明显,如果你不能处理他们所做的事情(或者更具体地说,你让他们做的事情),不要当面崩溃,展示一个漂亮的页面解释他们可以做什么,等等

尊重他们,不要以为他们了解你的系统,你是来帮助他们的

关于第一部分;我通常在当时编写大多数错误处理,稍后再添加一点


我通常不会抛出那么多异常。

我可以回答一个问题:你不需要假设你的用户“愚蠢”,你需要帮助他们使用你的应用程序。为事情显示漂亮的提示,验证数据并解释原因,这对他们来说很明显,如果你不能处理他们所做的事情(或者更具体地说,你让他们做的事情),不要当面崩溃,展示一个漂亮的页面解释他们可以做什么,等等

尊重他们,不要以为他们了解你的系统,你是来帮助他们的

关于第一部分;我通常在当时编写大多数错误处理,稍后再添加一点


我通常不会抛出那么多异常。

首先,也是最重要的是,要让用户清楚您的期望。第二,测试输入以验证其包含的数据是否在您期望的范围内

例如,我有一个带有电子邮件字段的表单。我们没有立即使用这些数据,所以我们没有对其进行任何检查。结果:大约1%的用户输入了他们的家庭地址。该字段标记为“Email Address”,显然用户只是在读第二个单词,而忽略了第一个单词

解决方法是将标签改为简单的“Email”,然后测试输入。对于kicks,我们继续记录用户最初在该字段中键入的内容,只是为了看看标签更改是否有帮助。是的


此外,作为一般实践,您的函数应该测试输入,以验证它们是否包含预期的数据。在您选择的语言中使用断言或其等价物。

首先,也最重要的是,让用户清楚您的期望。第二,测试输入以验证其包含的数据是否在您期望的范围内

例如,我有一个带有电子邮件字段的表单。我们没有立即使用这些数据,所以我们没有对其进行任何检查。结果:大约1%的用户输入了他们的家庭地址。该字段标记为“Email Address”,显然用户只是在读第二个单词,而忽略了第一个单词

解决方法是将标签改为简单的“Email”,然后测试输入。对于kicks,我们继续记录用户最初在该字段中键入的内容,只是为了看看标签更改是否有帮助。是的


此外,作为一般实践,您的函数应该测试输入,以验证它们是否包含预期的数据。在您选择的语言中使用断言或其等价物。

当我编写代码时,会出现一些我预期的异常情况,即文件可能丢失,或者某些xml序列化可能失败。我知道这些例外情况会提前发生,我可以处理它们

然而,有很多事情是你无法预料的,你也不应该去尝试。放入一个全局错误处理程序和记录器,以便最终捕获并记录所有内容。然后,当您的测试人员和/或用户发现导致异常(即错误输入)的情况时,您可以决定是否要专门针对它进行进一步处理,或者保持原样

小结:验证你的输入,但不要太盯着水晶球看,因为你永远不会预料到用户可能会提出的每一个问题。拥有一个全局处理程序和记录器,然后根据需要进行优化。

当我编写代码时,t