2017-05-02 11 views
0

私はすべてのプログラミング言語でExceptionクラスはThrowableインターフェイスのインスタンスだと思います。例外が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

任意のソリューション?

+2

はい、あります - https://eval.in/785678 – Styphon

答えて

3

Throwableは、エラーと例外を含むPHP 7のthrowステートメントによってスローされるオブジェクトの基本インターフェイスです。そして、あなたのコードが生成:$ eは例外$ eがスロー可能であるあなたがPHPのバージョン> = 7

を持っているしかし、あなたはPHPのバージョン5.6.23を持っているので、Throwableのインターフェイスは、このバージョンのために利用可能ないです。

+0

私はphp7にいると思っている間にこの問題がありましたが、実際にはphp7がインストールされていましたが、設定ファイルで5.6が設定されています...あなたの投稿でチェックしましたより多くを検索する前にそれを2度。 –

関連する問題