array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'en', ), 'this' => array ( 0 => 'fiber.throw.php', 1 => 'Fiber::throw', 2 => 'Resumes execution of the fiber with an exception', ), 'up' => array ( 0 => 'class.fiber.php', 1 => 'Fiber', ), 'prev' => array ( 0 => 'fiber.resume.php', 1 => 'Fiber::resume', ), 'next' => array ( 0 => 'fiber.getreturn.php', 1 => 'Fiber::getReturn', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'en', 'path' => 'language/predefined/fiber/throw.xml', ), 'history' => array ( ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); contributors($setup); ?>

Fiber::throw

(PHP 8 >= 8.1.0)

Fiber::throwResumes execution of the fiber with an exception

Description

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

Resumes the fiber by throwing the given exception from the current Fiber::suspend() call.

If the fiber is not suspended when this method is called, a FiberError will be thrown.

Parameters

exception

The exception to throw into the fiber from the current Fiber::suspend() call.

Return Values

The value provided to the next call to Fiber::suspend() or null if the fiber returns. If the fiber throws an exception before suspending, it will be thrown from the call to this method.

Examples

<?php

$fiber
= new Fiber(function () {
try {
// Suspend execution of the fiber declaring an interruption point
Fiber::suspend();
} catch (
Throwable $e) {
echo
$e->getMessage();
}
});

$fiber->start();

// Resumes execution of the fiber with
// passing the Exception to throw at the interruption point
$fiber->throw(new Exception('Message of an exception thrown at the current interrupt point'));

?>

The above example will output something similar to:

Message of an exception thrown at the current interrupt point