function dosome() { $this->check(do_throw()); }
public function __call($method, $args) { } } function do_throw() { throw new Exception(); } try { Test::foo(do_throw()); } catch (Exception $e) { echo "Caught!\n"; } try { (new Test())->bar(do_throw()); } catch (Exception $e) { echo "Caught!\n"; } try { $f = function () { }; $f->__invoke(do_throw()); } catch (Exception $e) { echo "Caught!\n"; } try { $t = new Test(); $f->__invoke($t->bar(Test::foo(do_throw()))); } catch (Exception $e) { echo "Caught!\n"; }