示例:
假设我有一个日志记录类,并且我在整个代码中使用了它的全局变量实例。
$logger = new Logger();
function correctWorking()
{
global $logger;
$logger->log("this is correct");
}
function failing()
{
$logger->log("this is fatal error"); /* here fatal error comes, : Call to a member
function log() on a non-object in ...
*/
moreImportantWork();
}
请不要建议更好的编码实践,我正在研究它们。 我的主要好奇是,如果发生错误,如何绕过致命错误行, 因为日志记录不像保持应用程序运行那么重要。
答案 0 :(得分:2)
你不能。
您可以像@$logger->log("this is fatal error");
一样抑制错误输出,但是:
相反,修复致命错误。
答案 1 :(得分:1)
你不能用致命错误做到这一点。在较低级别的错误上,您可以编写自己的error_handler,从而创建异常。然后,您可以使用try { ... } catch { /* do nothing here */ }
来避免脚本终止。
答案 2 :(得分:0)
您需要将global $logger;
放入failing()
功能中,这似乎是您的问题。
答案 3 :(得分:-2)
如果我理解你是正确的,你想跳过代码中的错误并继续执行脚本? 您可以使用@运算符来抑制致命错误
@$logger->log("this is fatal error");
了解更多示例http://de3.php.net/manual/en/language.operators.errorcontrol.php