为什么Exception不是Throwable的实例?

时间:2017-05-02 16:30:30

标签: php oop php-5.6

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

看看下面的代码,其中显示Exception不是php中Throwable的实例。

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
    }

}

Exception类构造函数在其最后一个参数中接受Throwable的情况下,链接异常会产生问题。

php版本:5.6.23

任何解决方案?

1 个答案:

答案 0 :(得分:6)

Throwable是可以通过 PHP 7 中的throw语句抛出的任何对象的基本界面,包括ErrorException 。如果您有 PHP版本> = 7

,您的代码会生成:$e is exception $e is throwable

但您的PHP版本 5.6.23 ,因此此版本的Throwable界面不可用