duk*_*vin 9 php error-handling
有时,我的脚本无法读取服务器的输出,并发生以下错误:
PHP Fatal error: Call to a member function somefun() on a non-object
这不是我不能修复的东西,但这会导致我的脚本崩溃.有没有办法可以创建一个在发生此特定错误时运行的函数?我认为制作try-catch或类似物是不切实际的,因为我必须找到调用成员函数的每个实例并测试对象是否存在(几千个).
Ric*_*ich 23
是的,抓住一个"错误"抛出,请参阅http://php.net/manual/en/language.errors.php7.php
<?php
$x = "not an object";
try {
$x->foo();
} catch (\Throwable $t) {
echo "caught";
}
Run Code Online (Sandbox Code Playgroud)
有没有办法可以创建一个在发生此特定错误时运行的函数?
是的,你可以使用" register_shutdown_function "让PHP在遇到这个错误之后就死去之前调用它.
PHP:捕获致命错误(调用非对象上的成员函数)
如果这就是"catch"的意思,就不可能从这个错误中恢复,因为PHP已经将"调用非对象上的成员函数"定义为"致命"错误.请参阅PHP将"调用非对象上的成员函数"转换为异常,以便对此进行一些讨论.