Cannot set error-handler to throw ErrorException in PHP-8

My script has the following code:

set_error_handler(function(int $severity, string $message, string $filename, int $lineNumber) : void {
    throw new ErrorException($message, 0, $severity, $filename, $lineNumber);
});

function test() : string {
    return $test;
}

test();

Running the script on PHP 7.3.11 (on macOS 10.15.7) works as expected and shows the following:

Fatal error: Uncaught ErrorException: Undefined variable: test in
…/index.php:9 Stack trace:

#0 …/index.php(9): {closure}(8, ‘Undefined varia…’, ‘…’, 9, Array)

#1 …/index.php(12): test()

#2 {main}

Next TypeError: Return value of test() must be of the type string,
null returned in …/index.php:9
Stack trace:

#0 …/index.php(12): test()

#1 {main} thrown in …/index.php on line 9

But on PHP-8 (php:8.0.0rc1-apache docker image), it gets stuck on a loop and nothing is displayed.

Removing the set_error_handler works though

Warning: Undefined variable $test in …/index.php on line 9

Fatal error: Uncaught TypeError: test(): Return value must be of type string, null returned in …/index.php:9

Stack trace:

#0 …/index.php(12): test()

#1 {main}
thrown in …/index.php on line 9

Is this a bug, or did something change in the new version? I tried it on PHP CLI btw.

%d bloggers like this: