3v4l.org

run code in 300+ PHP versions simultaneously
<?php namespace TestExample; class Obj1 { public function doObj1() {} } class Obj2 { public function doObj2Something() { throw new \RuntimeException('hi'); } public function doObj2SomethingElse() {} } class MainObj { private $obj1, $obj2; public function __construct(Obj1 $obj1, Obj2 $obj2) { $this->obj1 = $obj1; $this->obj2 = $obj2; } public function process() { $this->obj1->doObj1(); try { $this->obj2->doObj2Something(); } catch (\RuntimeException $e) { throw $e; } finally { $this->obj2->doObj2SomethingElse(); } } } try { $processor = new MainObj(new Obj1, new Obj2); $processor->process(); } catch (\RuntimeException $e) { var_dump($e->getMessage()); }

preferences:
46.29 ms | 402 KiB | 5 Q