是否有可能在包含文件中捕获致命错误php?

时间:2013-06-11 22:30:05

标签: php error-handling include

如果文件中出现致命错误我不希望脚本停止执行,这就是我想要做的事情

try { 
require "somethin.php"
} catch(...) {}

file_get_contents()eval()的某些方法是否适合

2 个答案:

答案 0 :(得分:7)

注意 - 这不回答海报的问题。丑陋的现实是你无法从致命错误中恢复,但这适用于其他错误

require不会抛出异常,而是默认触发错误。

要让php抛出异常,你必须注册一个错误异常处理程序。

您可以找到示例here

但基本上它

function exception_error_handler($errno, $errstr, $errfile, $errline ) {
    throw new ErrorException($errstr, $errno, 0, $errfile, $errline);
}
set_error_handler("exception_error_handler");

有了这个,你可以抓住并处理你认为合适的错误

答案 1 :(得分:6)

没有真正没有理智的方式来捕获(不可捕获;-))PHP中的致命错误。所以也没有理智的方法可以从中恢复。这是有道理的,因为这是一个致命的错误。

基本上PHP所说的是:这是你不能/不应该尝试恢复的东西。

请注意@Orangepill's solution也不会因致命错误而工作:http://codepad.org/4nzzYQSG

现在,如果您想在发生致命错误时做某事(例如发送电子邮件给您通知您),您可能需要查看:https://stackoverflow.com/a/2146171/508666