我讨厌编写错误条件代码。我想我没有一个好的方法来做到这一点:
有没有人有传统的建议让这更容易?
很多很棒的答案,谢谢。实际上我得到的关于处理用户的答案比我想象的要多。我实际上对后端的错误处理更感兴趣,处理数据库连接失败和前端的潜在影响等。让他们来吧!
答案 0 :(得分:7)
我可以回答一个问题:您不需要假设您的用户“愚蠢”,您需要帮助他们使用您的应用程序。显示好的提示,验证数据并解释原因,所以对他们来说很明显,如果你不能处理他们已经完成的事情(或者更具体地说,你让他们做了什么),不要让他们崩溃,显示一个很好的页面,解释他们可以做什么,等等。
尊重他们,并且不要假设他们了解您的系统的所有内容,而是在这里帮助他们。
关于第一部分;我当时通常会编写大多数错误处理,稍后再补充一点。
我通常不会抛出那么多例外。
答案 1 :(得分:3)
假设您的用户不知道任何事情,并且会以任何可能被破坏的方式破坏您的系统。
然后相应地编写错误处理代码。
答案 2 :(得分:1)
首先,最重要的是,向用户明确您的期望。其次,测试输入以验证它包含您期望的边界内的数据。
Prime示例,我有一个带有电子邮件字段的表单。我们没有立即使用这些数据,所以我们没有对它进行任何检查。结果:大约1%的用户输入了他们的家庭住址。该字段标记为“电子邮件地址”显然用户只是阅读第二个单词并忽略第一个单词。
修复方法是将标签更改为简单地说“电子邮件”,然后测试输入。对于踢,我们继续并记录用户最初在该字段中输入的内容,以查看标签更改是否有帮助。它确实。
此外,作为一般惯例,您的函数应测试输入以验证它们包含您期望的数据。以您选择的语言使用断言或其等价物。
答案 3 :(得分:1)
当我编码时,会出现一些我期望的异常,即文件可能丢失,或某些xml序列化可能会失败。我知道的那些例外会提前发生,我可以为他们处理。
有很多你无法预料到的,你也不应该尝试。放入一个全局错误处理程序和记录器,以便最终捕获和记录所有内容。然后,当您的测试人员和/或用户发现导致异常的情况(即输入错误)时,您可以决定是否要专门为其进行进一步处理,或者保留原样。
摘要:验证您的输入,但不要试图过多注视水晶球,因为您永远不会预料到用户可能会遇到的每个问题。拥有一个全局处理程序和记录器,然后根据需要进行优化。
答案 4 :(得分:0)
答案 5 :(得分:0)
你必须假设你的用户非常愚蠢。有人总能找到一种方法来为您提供您认为永远不会发生的输入。
我尝试尽可能地使我的异常抛出,以便在出现问题时提供最佳反馈。如果将所有内容整合在一起,则无法判断哪个错误情况会导致问题。
我通常会先尝试处理错误情况(在获取功能代码之前),但这不一定是最佳做法。
答案 6 :(得分:0)
有人已提到defensive programming。但是,从用户体验的角度来看,有一些想法。
一旦确定了用户应该和不应该做的事情,您就能够有效地编写错误处理代码。您可以使用辅助方法/类使自己更容易。
关于在业务逻辑之前/之后/期间编写处理的问题,请以这种方式思考:如果你要制作400,000个三明治,那么同时添加所有芥末可能会更快,但它可能更快也比单独制作每个三明治更无聊。谁知道,也许你真的很喜欢芥末的味道......