3v4l.org

run code in 300+ PHP versions simultaneously
<?php function yieldAnything(): Generator { try { yield 42; } finally { echo "finally in yieldSomething()\n"; } } function iteratorConsumer(): void { $iterator = yieldAnything(); $iterator->current(); // to trigger the yield throw new RuntimeException("any-exception-here-or-in-any-child-call-before-yieldAnything()-finally-is-triggered"); } function inner(): void { try { iteratorConsumer(); } catch (\Throwable) { echo "catch in inner()\n"; } finally { echo "finally in inner()\n"; } } function outer(): void { try { inner(); } catch (\Throwable) { echo "catch in outer()\n"; } finally { echo "finally in outer()\n"; } } function main(): void { try { outer(); } catch(\Throwable) { echo "catch in main()\n"; } finally { echo "finally in main()\n"; } } main();
Output for git.master_jit, git.master
finally in yieldSomething() catch in inner() finally in inner() finally in outer() finally in main()

This tab shows result from various feature-branches currently under review by the php developers. Contact me to have additional branches featured.

Active branches

Archived branches

Once feature-branches are merged or declined, they are no longer available. Their functionality (when merged) can be viewed from the main output page


preferences:
38.4 ms | 405 KiB | 5 Q