getMessage()); } yield $a+1; error_log('Finished in genFoo'); } function foo($a) { $gen1 = genFoo($a); $gen1->next(); while ($gen1->valid()) { $val = $gen1->current(); var_dump($val); try { $gen1->raise(new Exception('Exception given to continuation '.$val)); } catch (Exception $e) { printf("Caught %s in foo()\n", $e->getMessage()); } } } function main($a) { foo($a); } main(1);