PHP5.3から、Exceptionのコンストラクタの第3引数に別のExceptionを渡せるようになったらしい。
例えばこんな感じで。
<?php throw new Exception('Ex1', 0, new Exception('Ex2')) ?>
エラー出力はこんな感じになる。第3引数として渡された方が先に出力され、親の方は「Next exception」として出力される。
PHP Fatal error: Uncaught exception 'Exception' with message 'Ex2' in /xxx/exception.php:1
Stack trace:
#0 {main}
Next exception 'Exception' with message 'Ex1' in /xxx/exception.php:1
Stack trace:
#0 {main}
thrown in /xxx/exception.php on line 1
もういっちょいってみるか?
<?php throw new Exception('Ex1', 0, new Exception('Ex2', 0, new Exception('Ex3'))) ?>
結果。
Fatal error: Uncaught exception 'Exception' with message 'Ex3' in /xxx/exception.php:1
Stack trace:
#0 {main}
Next exception 'Exception' with message 'Ex2' in /xxx/exception.php:1
Stack trace:
#0 {main}
Next exception 'Exception' with message 'Ex1' in /xxx/exception.php:1
Stack trace:
#0 {main}
thrown in /xxx/exception.php on line 1
便利そうだが、今のところ使いどころを思いつかない。
参考:PHP 5.3で追加された例外のうんたらかんたら - ゆっくり*ゆっくり
0 件のコメント:
コメントを投稿