throw Is An Expression

throw was a standalone expression: it needed to be alone, between semicolons (or equivalents).

Since PHP 8.0, throw may be included in another expression. This is useful with or, or the coalesce operator, to execute the expression when a value is missing or failing.

PHP code

<?php

foo() or throw new \Exception();

$x = $_GET['x'] ?? throw new \Exception('Missing value for x');

?>

Before

PHP Parse error:  syntax error, unexpected 'throw' (T_THROW)

Parse error: syntax error, unexpected 'throw' (T_THROW)

After


PHP version change

This behavior changed in 8.0

See Also

Error Messages

Analyzer