コンストラクタやデストラクタの中で例外をスロー

コンストラクタで例外をスロー

 <?php
 class Foo {
     function __construct() {
        throw new Exception('Error: __construct()');
     }
 }
 
 try {
     $f = new Foo;
     print "OK\n";
 } catch (Exception $e) {
     print $e->getMessage() . "\n";
 }
 Error: __construct()

OK。

デストラクタで例外をスロー

 <?php
 class Bar {
     function __construct() { }
     function __destruct() {
        throw new Exception('Error: __destruct()');
     }
 }
 
 try {
     $b = new Bar;
     print "OK\n";
 } catch (Exception $e) {
     print $e->getMessage() . "\n";
 }
 OK
 PHP Fatal error:  Uncaught exception 'Exception' with message 'Error: __destruct()' in /home/taro/tmp/1.php:18
 Stack trace:
 #0 [internal function]: Bar->__destruct()
 #1 {main}
   thrown in /home/taro/tmp/1.php on line 18 

ダメ。

 try {
     $b = new Bar;
     unset($b);
     print "OK\n";
 } catch (Exception $e) {
     print $e->getMessage() . "\n";
 }
 Error: __destruct()

OK。


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS

Last-modified: 2012-01-18 (水) 23:52:38