如何解决无法设置错误处理程序以在PHP-8中引发ErrorException
我的脚本具有以下代码:
set_error_handler(function(int $severity,string $message,string $filename,int $lineNumber) : void {
throw new ErrorException($message,$severity,$filename,$lineNumber);
});
function test() : string {
return $test;
}
test();
在PHP 7.3.11(在macOS 10.15.7上)上运行脚本可以按预期工作并显示以下内容:
致命错误:未捕获ErrorException:未定义变量:在 ... / index.php:9堆栈跟踪:
#0 ... / index.php(9):{关闭}(8,'未定义变量...','...',9,数组)
#1 ... / index.php(12):test()
#2 {main}
下一个TypeError:test()的返回值必须是字符串类型, 在... / index.php:9中返回null 堆栈跟踪:
#0 ... / index.php(12):test()
#1 {main}在第9行的... / index.php中抛出
但是在PHP-8(php:8.0.0rc1-apache
docker映像)上,它陷入了循环,什么也不显示。
尽管删除set_error_handler
还是可以的
警告:第9行... / index.php中的未定义变量$ test
致命错误:未捕获的TypeError:test():返回值必须为字符串类型,在... / index.php:9中返回null
堆栈跟踪:
#0 ... / index.php(12):test()
#1 {main} 在第9行的... / index.php中抛出
这是错误,还是新版本中有更改?我在PHP CLI btw上尝试过。
解决方法
如评论中所指出的,这确实是一个错误,已经在第二个候选版本(PHP-8.0.0 RC2)中得到解决。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。