(PHP 8 >= 8.1.0)
Fiber::throw — Возобновляет выполнение файбера с передачей исключения
Метод возобновляет выполнение файбера и передаёт в файбер исключение, которое выбрасывается в текущей точке прерывания стека вызовов — месте последнего вызова метода Fiber::suspend().
Вызов метода на неприостановленном файбере выбросит ошибку FiberError.
exceptionИсключение, которое требуется выбросить в текущей точке прерывания файбера — точке вызова метода Fiber::suspend().
Метод возвращает значение, которое передали в очередном вызове метода Fiber::suspend(),
или значение null, если файбер вернул результирующее значение.
Исключение, которое файбер выбрасывает раньше очередной приостановки, выбрасывается в точке вызова этого метода.
<?php
$fiber = new Fiber(function () {
try {
// Приостановка выполнения файбера и объявление точки прерывания
Fiber::suspend();
} catch (Throwable $e) {
echo $e->getMessage();
}
});
$fiber->start();
// Возобновляем выполнение файбера
// с передачей исключения, которое выбросится в точке прерывания
$fiber->throw(new Exception('Сообщение исключения, которое выбросилось в текущей точке прерывания'));Вывод приведённого примера будет похож на:
Сообщение исключения, которое выбросилось в текущей точке прерывания