PHP Conference Japan 2024

Generator::throw

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

Generator::throw將例外拋入產生器

說明

public Generator::throw(Throwable $exception): mixed

將例外拋入產生器並繼續執行產生器。其行為與將目前的 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

新增註解

使用者貢獻的註解 2 則註解

1
gt199899 at gmail dot com
7 年前
$gen = (function () {
try {
yield 1;
} catch (Exception $e) {
echo $e->getMessage();
}
})();

$gen->throw(new Exception('gen throw exception'));
-4
gt199899 at gmail dot com
7 年前
$gen = (function () {
try {
yield 1;
} catch (Exception $e) {
echo $e->getMessage();
}
})();

$gen->throw(new Exception('gen throw exception'));
To Top