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

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

<?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 (2461d)