例外の原因

例外オブジェクトにその例外の原因となった別の例外オブジェクトを設定できる機能。

Java

Exceptionなどのクラスのコンストラクタには例外の原因となった例外を設定できるものが多い。コンストラクタになくても例外オブジェクトをいったん生成した後にメソッドで設定できる。

Signature:

メソッドで設定できるのは、これが Java 1.4 で導入された後付の機能だからだと思われる。 Java 1.4 より前はコンストラクタで cause を設定することができないので、そのときに作られた例外クラスに対しても cause を設定できるようにこのメソッドがある。このメソッドの返り値は例外の例外(cause)ではなく例外自身(this)でメソッドチェーンのためのもの。

PHP

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

このサイトは筆者(hydrocul)の個人メモの集合です。すべてのページは永遠に未完成です。