* コンストラクタやデストラクタの中で例外をスロー [#aad2c6d5]

** コンストラクタで例外をスロー [#w826a073]

 <?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。

** デストラクタで例外をスロー [#sedacb4e]

 <?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;
     print "OK\n";
     unset($b);
     print "OK\n";
 } catch (Exception $e) {
     print $e->getMessage() . "\n";
 }

 OK
 Error: __destruct()

OK。

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