如何捕获PHP致命错误
我可以使用 set_error_handler() 捕获大多数PHP错误,但是对于致命的( E_ERROR )错误(例如调用不存在的函数)不起作用。 还有另一种捕获这些错误的方法吗? 我正在尝试针对所有错误调用 mail() ,并且正在运行PHP 5.2.3。 #1楼 PHP具有可捕获的致命错误。 它们定义为E_RECOVERABLE_ERROR。 PHP手册将E_RECOVERABLE_ERROR描述为: 可捕获的致命错误。 它表明发生了可能是危险的错误,但没有使引擎处于不稳定状态。 如果错误未由用户定义的句柄捕获(另请参见 set_error_handler() ),则应用程序将中止,因为它是E_ERROR。 您可以通过使用 set_error_handler() 并检查E_RECOVERABLE_ERROR来“捕获”这些“致命”错误。 我发现捕获此错误时引发异常很有用,然后可以使用try / catch。 这个问题和答案提供了一个有用的示例: 如何在PHP类型提示中捕获“可捕获的致命错误”? 但是,可以处理E_ERROR错误,但由于引擎处于不稳定状态,因此无法从中恢复。 #2楼 我开发了一种方法来捕获PHP(几乎所有)中的所有错误类型! 我不确定E_CORE_ERROR(我认为仅不适用于该错误)! 但是,对于其他致命错误(E_ERROR,E_PARSE,E_COMPILE .