我正在研究我网站的后端,我想知道我应该在多大程度上测试错误并相应地抛出异常? 在不正确使用方法和功能的意义上进行测试。正确使用时没有错误。
我最担心的是代码膨胀,并且用一堆if / elses,类型检查和其他类似的测试来解决它。
你是否应该考虑某人可以使用某个对象的所有可能方式,捕获所有不正确的用途,并抛出异常,以便开发人员清楚地知道他们做错了什么?
或者它是一种更好的方法让代码自然地破解(显然捕获并检查那些重要的事情,但不是每个意外事件),并依赖于使用代码的任何人阅读可用的文档并相应地使用它?
处理此类问题时是否需要遵循一般最佳做法或指南?我正在使用PHP,有什么特定的PHP,虽然这个问题通常是语言范围的吗?
感谢您对此事的任何帮助。
答案 0 :(得分:4)
至少,你的应用程序不应该“破解”:当检测到错误时(因为你检测到问题可能发生并避免它,或者因为问题确实发生了),你应该显示一些不错的错误消息,并最终记录错误的技术信息。
关于膨胀代码:我不会在我的代码中添加太多测试以及所有这些:它最终会出现难以理解和维护的内容 - 这很重要!
我通常会尝试做的是:
当然,最后,您应该确保数据库中的数据是正确的,并且您不能只保存一半的数据。
处理技术错误的常用方法是使用异常;这是一个非常基本的想法:
try {
// Begin transaction to the DB
// Some code that might fail and throw an Exception
// Some other code that might fail and throw an Exception
// Code here will not be executed if an Exception has been thrown
// Commit DB transaction
} catch (Exception $e) {
// Rollback transaction (cancels the queries that were sent to the DB)
// Log technical informations to a file
// Display a nice message
}
最棒的是,它允许将所有错误处理代码放在一个地方,并在重要内容中放置较少的测试代码;即“让它失败,我们将在以后处理问题”
答案 1 :(得分:1)
我通常只是确保方法输入参数和/或公共成员被填充并且具有正确的类型(string,int等等)。除此之外,我只是让它自然而然地破裂。 (如果人们不打算阅读文档,那么他们应该让事情稍微破解。)
正如我所看到的,你不会通过错误检查来破坏你的代码,他们唯一的目的就是支持你的同事/客户/随机开发者的懒惰。