$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 — Wirft eine Exception in einen Generator
Wirft eine Exception in einem Generator und setzt die Ausführung des
Generators fort. Der Generator verhält sich dann so, als wäre der aktuelle
yield
-Ausdruck durch eine throw $exception
-Anweisung
ersetzt worden.
Wenn der Generator beim Aufruf dieser Methode bereits geschlossen ist, wird die Exception stattdessen im Kontext des aufrufenden Codes geworfen.
exception
Die Exception, die in den Generator geworfen wird.
Gibt den gelieferten Wert zurück.
Beispiel #1 Eine Exception in einen Generator werfen
<?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'));
?>
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
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'));