Creo que en todos los lenguajes de programación, la clase de Exception es una instancia de la interfaz Throwable .
Eche un vistazo al siguiente código que muestra que Exception no es una instancia de Throwable en php.
try { throw new InvalidArgumentException("error message"); } catch (InvalidArgumentException $e) { if ($e instanceof Exception) { echo '$e is exception'; // this line gets executed } if ($e instanceof Throwable) { echo '$e is throwable'; // but this one never } } Hace un problema con el encadenamiento de excepciones donde el constructor de la clase Exception acepta Throwable en su último argumento.
versión de php: 5.6.23
¿Alguna solución?
Throwable es la interfaz base para cualquier objeto que se pueda lanzar a través de una instrucción throw en PHP 7 , incluidos Error y Exception . Y su código produce: $e is exception $e is throwable si tiene una versión de PHP >= 7
Pero tiene la versión de PHP 5.6.23 , por lo que la interfaz Throwable no está disponible para esta versión .