$gen = (function () {
try {
yield 1;
} catch (Exception $e) {
echo $e->getMessage();
}
})();
$gen->throw(new Exception('gen throw exception'));
(PHP 5 >= 5.5.0, PHP 7, PHP 8)
Generator::throw — Lance une exception dans le générateur
Lance une exception dans le générateur et reprend son exécution.
Le comportement sera le même que si l'expression yield courante ait été
remplacée avec une expression throw $exception
.
Si le générateur est déjà fermé quand cette méthode est appelée, l'exception sera levée dans le contexte de l'appelant à la place.
exception
Exception à lancer dans le générateur.
Retourne la valeur cédée.
Exemple #1 >Lance une exception dans un générateur
<?php
function gen() {
echo "Foo\n";
try {
yield;
} catch (Exception $e) {
echo "Exception : {$e->getMessage()}\n";
}
echo "Bar\n";
}
$gen = gen();
$gen->rewind();
$gen->throw(new Exception('Test'));
?>
L'exemple ci-dessus va afficher :
Foo Exception : Test Bar
$gen = (function () {
try {
yield 1;
} catch (Exception $e) {
echo $e->getMessage();
}
})();
$gen->throw(new Exception('gen throw exception'));
$gen = (function () {
try {
yield 1;
} catch (Exception $e) {
echo $e->getMessage();
}
})();
$gen->throw(new Exception('gen throw exception'));