区分新的和现有的例外

时间:2012-01-28 23:23:34

标签: php database web-applications exception-handling error-handling

我正在创建一个PHP应用程序,我想显示错误发生的次数。我想弄清楚的问题是,是否已经报告了错误,或者是否使用以下值报告了新错误:

  1. 消息(即:尝试除以零。)
  2. 堆栈跟踪(即:在componentNETapp.Form1.btnTrackExceptionsUn_Click(Object sender,EventArgs e)...)
  3. 来源(即:componentNETapp)
  4. 目标网站(即:Void btnTrackExceptionsUn_Click(System.Object,System.EventArgs))
  5. 由于

1 个答案:

答案 0 :(得分:3)

首先是错误还是例外? PHP在错误和异常之间有所不同。通常,手册的Error Handling and Logging­Docs部分可能会引起关注。

错误:

error_get_last­Docs将返回包含以下信息的最后一个错误:类型(整数),消息(字符串),文件(字符串)和行(整数)。我会说这是自我解释的。您可能还想查看set_error_handler­Docs,它将 - 在这四个信息旁边 - 还提供您可以使用的错误上下文

如果您需要有关错误的更多信息,那么PHP debug_backtrace­Docs中的回溯也可以添加更多上下文。

例外:

每个Exception­Docs都有类似的成员:Message(字符串),Code(整数),File(字符串)和Line(整数)。它还有一个包含更多信息的Trace,可以用作上下文。也可以为嵌套异常设置先前的异常。与错误处理程序一样,也可以使用异常处理程序:set_exception_handler­Docs


根据给出的信息,您应该能够以稍后可以分析它们的方式处理和记录所有错误/异常。除此之外,还可以使用PHP错误日志记录并将这些错误存储到数据库中。有关简单示例,请参阅Outputting all PHP errors to database not error_log。我想说的关键是你以一种或多或少的规范化形式存储错误信息,这样你就可以在以后定义如何计算/分组它们的标准。

如果您正在寻找更多基础架构,请查看提供某些工具的apache logging services project(例如a viewer),并为其提供PHP记录器(log4php

但这仅仅是示例性的,其他工具也存在,其中一些使用MySQL后端,你不仅可以跟踪PHP,还可以跟踪其他错误。