有时,我的脚本无法读取服务器的输出,并发生以下错误:
PHP Fatal error: Call to a member function somefun() on a non-object
这不能解决我的问题,但这会导致我的脚本崩溃。有没有办法可以创建一个在发生此特定错误时运行的函数?我不认为尝试捕获或类似的是实用的,因为我必须找到调用成员函数的每个实例并测试对象是否存在(几千个)。
答案 0 :(得分:19)
是的,捕获“错误”throwable,请参阅http://php.net/manual/en/language.errors.php7.php
<?php
$x = "not an object";
try {
$x->foo();
} catch (\Throwable $t) {
echo "caught";
}
有没有办法可以创建一个在发生此特定错误时运行的函数?
是的,您可以使用“register_shutdown_function”让PHP在遇到此错误后立即调用函数。
PHP:捕获致命错误(调用非对象上的成员函数)
如果这就是“catch”的意思,就不可能从这个错误中恢复,因为PHP已经将“调用非对象上的成员函数”定义为“致命”错误。有关可能出现这种情况的讨论,请参阅PHP turn "Call to a member function on a non-object" into exception。
答案 1 :(得分:-1)
答案 2 :(得分:-1)
您可能正在寻找http://www.php.net/manual/en/function.set-error-handler.php。您必须编写自己的错误处理程序并检查错误代码是否要显示错误。