例外の原因 2016/06/19
例外オブジェクトにその例外の原因となった別の例外オブジェクトを設定できる機能。
Java 2016/06/19
Exceptionなどのクラスのコンストラクタには例外の原因となった例外を設定できるものが多い。コンストラクタになくても例外オブジェクトをいったん生成した後にメソッドで設定できる。
Signature:
メソッドで設定できるのは、これが Java 1.4 で導入された後付の機能だからだと思われる。
Java 1.4 より前はコンストラクタで cause を設定することができないので、そのときに作られた例外クラスに対しても cause を設定できるようにこのメソッドがある。このメソッドの返り値は例外の例外(cause)ではなく例外自身(this)でメソッドチェーンのためのもの。
PHP 2015/01/26
Exceptionクラスのコンストラクタの3つ目の引数に例外の原因となった例外を指定することができる。ただ、スタックトレースを出力したときに
Javaのような例外の原因となった例外のスタックトレースまでは出力されないみたい。
例外の原因となった例外を取得するには $e->getPrevious() のように Exception::getPrevious を呼び出す。
例外 | PHP Manual
http://php.net/manual/ja/language.exceptions.php
例外を拡張する | PHP Manual
http://php.net/manual/ja/language.exceptions.extending.php
Exception::getPrevious | PHP Manual
http://php.net/manual/ja/exception.getprevious.php