2010年7月5日月曜日

PHP 5.3の地味な新機能 「ネストされたException」

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 件のコメント:

ブログ アーカイブ

tags