最好的PHP错误类

时间:2010-04-01 14:48:53

标签: php zend-framework error-handling

我正在寻找关于以下任务的一些编码想法。我想要实现。

我在文档中列出了错误号,描述和用户友好描述。

Ex:
Error Number, Description, User Friendly Description 
-----------------------------------------------------
1, Internal Error, "An Internal Error has occurred. Please try again later".
2, Delete Failed, "Unable to delete an Entry. Please try later".

我想编写一个PHP类来存储以上所有内容,以便稍后在代码中发生错误时可以轻松访问它们。

例如:如果我的代码收到错误2,我想检查错误代码和类中的错误代码列表,检索描述,用户友好描述并将其显示给用户。

我希望这是最小的开销。所以,不要将它存储在数据库中。

我正在使用PHP5和Zend MVC框架。有人可以帮我提供最好的示例代码吗?

由于

2 个答案:

答案 0 :(得分:1)

  • 使用错误代码和用户友好文本编写一个ini文件。
  • 编写一个扩展Exception的类,该类从ini文件中获取您的错误代码。添加方法,例如 公共函数getUserFriendlyMsg(){} 它从ini文件中返回字符串。
当你遇到这样的错误时,在普通代码中

你只需要抛出异常。 e.g。

throw new My_Exception('Delete failed',2);

在你的例子中控制器:

try{
    // your code
}catch(My_Exception $e){
    echo $e->getUserFriendlyMsg();
}

注意:您应该考虑扩展您的excpetion类以将失败记录到日志文件中,为此您可以引入服务级别。 (参见手册 - 异常处理)

答案 1 :(得分:0)

我喜欢使用简单的custom error handlercustom exception handler执行以下操作:

如果处于开发模式:

  • 显示详细的错误消息

  • 如果E_WARNING或更糟,请将错误消息输出到日志文件中(例如使用Zend_Log

  • 如果出现致命错误,请暂停执行并显示包含完整backtrace的错误页面

如果处于生产模式:

  • 仅记录错误消息

  • 关于致命错误,暂停执行并显示一个不错的“已发生错误”页面。

我喜欢处理错误,所以我抓到的任何异常都会调用trigger_error()来进行输出和记录。

您还可以扩展默认的Exception类来执行日志记录和显示。您可能希望将发生的任何错误转换为exceptions。然后使用throw将手动错误作为例外触发。

<强>启示:

Kohana的错误处理程序(屏幕截图here)是迄今为止我见过的最好和最好的。它是开源的,也许你甚至可以抓住那部分(但请确保你先阅读许可证。)