3v4l.org

run code in 300+ PHP versions simultaneously
<?php function yieldFromIteratorGeneratorThrows() { try { yield from new class(new ArrayIterator([1, -2])) extends IteratorIterator { public function key() { if ($k = parent::key()) { throw new Exception; } return $k; } }; } catch (Exception $e) { yield 2; } } foreach (yieldFromIteratorGeneratorThrows() as $k => $v) { var_dump($v); }

preferences:
34.04 ms | 404 KiB | 5 Q