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