为什么Exception不是Throwable的实例?

Los*_*der 4 php oop php-5.6

我认为在所有编程语言中Exception类都是Throwable接口的实例.

看一下下面的代码,它显示Exception的不是Throwablephp中的实例.

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
    }

}
Run Code Online (Sandbox Code Playgroud)

它会产生链接异常的问题,其中Exception类构造函数接受Throwable它的最后一个参数.

php版本: 5.6.23

有解决方案吗

arb*_*tes 8

Throwable是可以通过PHP 7中throw语句抛出的任何对象的基本接口,包括和.并且您的代码会生成:如果您的PHP版本> = 7ErrorException$e is exception $e is throwable

但是你有PHP版本5.6.23,所以这个版本没有Throwable接口.