Fiber::throw

(PHP 8 >= 8.1.0)

Fiber::throwВозобновляет выполнение файбера с передачей исключения

Описание

public function Fiber::throw(Throwable $exception): mixed

Метод возобновляет выполнение файбера и передаёт в файбер исключение, которое выбрасывается в текущей точке прерывания стека вызовов — месте последнего вызова метода 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('Сообщение исключения, которое выбросилось в текущей точке прерывания'));

Вывод приведённого примера будет похож на:

Сообщение исключения, которое выбросилось в текущей точке прерывания