有时,我的脚本无法读取服务器的输出,并出现以下错误:
PHP Fatal error: Call to a member function somefun() on a non-object
这不是我无法解决的问题,但这会导致我的脚本崩溃。有没有办法可以创建一个在发生此特定错误时运行的函数?我认为进行 try-catch 或类似操作并不实用,因为我必须找到调用成员函数的每个实例并测试该对象是否存在(几千个)。
有时,我的脚本无法读取服务器的输出,并出现以下错误:
PHP Fatal error: Call to a member function somefun() on a non-object
这不是我无法解决的问题,但这会导致我的脚本崩溃。有没有办法可以创建一个在发生此特定错误时运行的函数?我认为进行 try-catch 或类似操作并不实用,因为我必须找到调用成员函数的每个实例并测试该对象是否存在(几千个)。
是的,捕获一个“错误”可抛出,请参阅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了解为什么会这样。
您可能正在寻找http://www.php.net/manual/en/function.set-error-handler.php。您必须编写自己的错误处理程序并检查错误代码是否要显示错误。