0

我遇到了...烦人,我猜...在我使用的应用程序中使用自定义错误处理程序,我希望这里有人可以提供一些见解。

作为我们网站数据聚合的一部分,自定义爬虫和解析器是在我们的代码库之外单独构建的。它们存储在数据库中,并通过 eval 在 gearman 进程内运行。

设置了一个自定义错误处理程序,如果出现错误(例如,如果在正则表达式中忘记了分隔符,或者当我没有喝咖啡时出现除以零错误),则插入正在运行的公司的 ID 号。在大多数情况下,这个错误处理程序工作得很好。

但是,我注意到如果 eval'd 代码中有未终止的注释,则不使用错误处理程序,因此 php 错误日志不包含有问题的公司的 ID 号。

我们在处理程序中处理以下错误类型

  • E_WARNING
  • E_USER_WARNING
  • E_ERROR
  • E_USER_ERROR

日志指出注释字符串错误是“警告”,所以我不知道为什么没有调用自定义处理程序。

有什么想法吗?

4

1 回答 1

1

根据文档,您不能使用自定义函数error_handler()E_ERROR

用户定义的函数无法处理以下错误类型:E_ERROR、E_PARSE、E_CORE_ERROR、E_CORE_WARNING、E_COMPILE_ERROR、E_COMPILE_WARNING,以及在调用 set_error_handler() 的文件中引发的大部分 E_STRICT。

于 2013-10-22T20:49:05.597 回答