PHP 8.4.2 Released!

Generator::throw

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

Generator::throwБросает исключение в генератор

Описание

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

Метод бросает исключение в генератор и возобновляет выполнение генератора. Поведение будет таким же, как если бы текущее выражение yield заменили выражением throw $exception.

Если при вызове этого метода генератор уже закрыт, PHP выбросит исключение в контексте кода, который вызвал этот метод.

Список параметров

exception

Исключение, которое нужно бросить в генератор.

Возвращаемые значения

Метод возвращает значение, которое отдал генератор.

Примеры

Пример #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 notes

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

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

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