模型中的错误处理(MVC)

And*_*dre 6 php error-handling model-view-controller model

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

目前我的所有模型都使用'setError'和'getError'方法.

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

另外我正在考虑设置一个包含我所有错误的单独文件.每个模型一个文件,也想对此有所了解.

Fra*_*rth 4

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

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

例如:

throw new UserError("That object no longer exists.");
Run Code Online (Sandbox Code Playgroud)

当发生您想要对用户隐藏的错误时,抛出一种不同类型的异常,可能名为InternalError。您可能希望记录下来并允许程序继续,这样特定的错误对用户是隐藏的。如果它阻止某些事情发生,您可能想抛出一条通用错误消息。这些都是错误,您希望尽快修复它们。

例如:

throw new InternalError("Failed to connect to remote service");
Run Code Online (Sandbox Code Playgroud)

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