我经常与我的一位同事讨论在面向对象的 PHP 项目中最合适的“执行”错误处理方式。
他认为我们应该继续使用Exceptions(遗留代码)。在他的方法论中,您将有如下方法:
private function doSomething() {
if (condition) {
throw new CustomException("error message");
}
}
然后,您将在 try catch 块中调用它并将异常错误添加到错误数组中(然后您可以根据自己的选择输出)。
在上面的示例中,条件是一个布尔比较,对于它来说接收真或假响应是完全合理的。
像这样的帖子:PHP类中的错误处理似乎同意这个立场..
我的观点是,因为真或假都是完全合理的反应,所以这是对异常的不恰当使用。错误不是异常的,而是完全正常的。
因此,我已经创建了一个自定义错误类,您可以在方法顶部对其进行实例化。然后,您将方法中的任何错误添加到此实例的错误数组属性中。然后,您从您的方法返回此实例,并可以调用passesConditions()
该类的方法,该方法返回一个布尔值,具体取决于是否有任何错误。
这种方法始终是可扩展的,因为您可以以一致的方式记录所有失败(我很感激您可以使用 Exceptions 做类似的事情 :))
那么我们中的任何一个都比另一个更正确,如果是,为什么?
非常感谢