3v4l.org

run code in 300+ PHP versions simultaneously
<?php class AException extends \Exception {} class T extends \RuntimeException{ public function __construct($message, AException $e) { parent::__construct($message, $e->getCode(), $e); } } try { throw new T("CRAP", new AException); } catch (\Exception $e) { var_dump($e); // It's not of type AException any more }

preferences:
24.35 ms | 404 KiB | 5 Q