1

我注意到我的一个脚本由于字符串和未实现的对象实例之间的无效连接而失败__toString()。这是一个最小的复制:

class Foo { }
$bar = new Foo();
echo "Hello " . $bar . "\n";
echo "OK";

这在第三行失败。奇怪的是,我无法以任何方式捕捉或检测到错误,这与我从现在开始遇到的任何其他错误不同。它只是失败了。这是我尝试过的但不起作用的方法:

  • 捕获将代码包装在try ... catch块中的错误,尝试捕获Exception,ErrorThrowable;
  • 注册一个关闭函数register_shutdown_function()error_get_last()在其中使用,关闭函数根本不会被调用;
  • 调用error_reporting(E_ALL),关闭函数仍然没有被调用。

如果我使用,唯一的痕迹在输出中ini_set('display_errors', 1),讽刺的是:

Catchable fatal error: Object of class Foo could not be converted to string

但是,看起来没有办法以编程方式捕捉到这一点。

在 PHP 7.0.22 和 PHP 7.0.33 中测试。

4

0 回答 0