Php 模型中的错误处理(MVC)

Php 模型中的错误处理(MVC),php,model-view-controller,error-handling,model,Php,Model View Controller,Error Handling,Model,我想知道处理模型中错误的例外标准是什么 目前,我的所有模型都在使用“setError”和“getError”方法 这意味着我只关心对模型中方法的调用是真是假。如果它为false,那么我将在控制器中使用$this->model->getError() 此外,我正在考虑设置一个包含所有错误的单独文件。每个模型一个文件,也希望对此有想法。一个更简单的解决方案是使用 当发生错误时,您将向用户显示该错误,抛出一种特殊类型的异常-可能名为UserError。抛出异常时,异常应包含错误消息的文本。这些类型的错

我想知道处理模型中错误的例外标准是什么

目前,我的所有模型都在使用“setError”和“getError”方法

这意味着我只关心对模型中方法的调用是真是假。如果它为false,那么我将在控制器中使用
$this->model->getError()


此外,我正在考虑设置一个包含所有错误的单独文件。每个模型一个文件,也希望对此有想法。

一个更简单的解决方案是使用

当发生错误时,您将向用户显示该错误,抛出一种特殊类型的异常-可能名为
UserError
。抛出异常时,异常应包含错误消息的文本。这些类型的错误是为用户提供有用信息的功能(例如,他们试图删除不存在的内容-当他们打开多个浏览器时可能会发生这种情况,等等)

e、 g:

当发生要向用户隐藏的错误时,抛出另一种异常,可能名为
InternalError
。您可能希望记录此操作并允许程序继续,以便对用户隐藏特定错误。如果它阻止了某些事情的发生,您可能希望抛出一条通用错误消息。这些可能是bug,您希望尽快修复它们

e、 g:


所有错误消息都可以存储(硬编码)在引发异常的源中。这不一定是一个糟糕的设计实践-如果使用类似的工具,您可以轻松地翻译所有这些消息。

我一直在使用log4j和log4cxx,并将日志记录到syslogd。Kiwi是一个简单的Win32系统记录器,它将跟踪日志消息并将它们保存到文件中。Log4j/Log4cxx具有可用于设置所有日志级别或日志消息目的地的配置文件(您可以登录到多个位置)

它的设置和使用几乎不费吹灰之力,而且工作起来很有魅力

我自己还没有试过


当您不再希望程序继续执行时,异常是好的。在高级别捕获异常,您可以接受失败执行的失败。

在做出最终决定之前,请查看有关如何创建验证例程的NerdDinner教程:


验证部分大约占整个页面的2/3。

我喜欢这个想法,唯一需要注意的是,如果存在多个错误,理想情况下,我希望记录错误并继续执行。因此我使用setError和getError。我检查返回值是否为真,这意味着所有操作都成功了,如果不是,我就会得到错误。我的操作可能部分成功,因此我希望返回false并使用getError获取指示哪个部分失败的消息。希望这是有道理的。
throw new UserError("That object no longer exists.");
throw new InternalError("Failed to connect to remote service");