$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 — 將例外拋入產生器
將例外拋入產生器並繼續執行產生器。其行為與將目前的 yield 運算式替換為 throw $exception
陳述式相同。
如果在呼叫此方法時產生器已經關閉,則例外將會在呼叫者的上下文中拋出。
exception
要拋入產生器的例外。
回傳 yield 的值。
範例 #1 將例外拋入產生器
<?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'));
?>
以上範例會輸出
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'));