我遇到了麻烦……我想……在我使用的应用程序中有一个自定义错误处理程序,我希望这里的人可以提供一些见识。
作为我们网站数据聚合的一部分,自定义爬虫和解析器是在我们代码库之外的各个基础上构建的。它们存储在数据库中,并通过Gearman进程中的eval运行。
有一个自定义的错误处理程序设置,如果有错误(例如,正则表达式中忘记了分隔符,或者当我没有喝咖啡时会出现零除错误),则插入要运行的公司的ID号。在大多数情况下,此错误处理程序效果很好。
但是,我注意到,如果在eval'd代码中有未终止的注释,则不会使用错误处理程序,因此php错误日志中不会包含有问题的公司的ID号。
我们在处理程序中处理以下错误类型
日志指出注释字符串错误为“警告”,因此我不知道为什么未调用自定义处理程序。
有什么想法吗?
最佳答案
根据documentation,您不能将自定义函数用作error_handler()
的E_ERROR
:
The following error types cannot be handled with a user defined function: E_ERROR, E_PARSE, E_CORE_ERROR, E_CORE_WARNING, E_COMPILE_ERROR, E_COMPILE_WARNING, and most of E_STRICT raised in the file where set_error_handler() is called.
关于php - 自定义PHP错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19527968/