<?php
class Test {
public $start;
public $end;
public function __construct() {
echo "__construct<br />";
$this->start = microtime(true);
}
public function test() {
echo "in test()<br />";
throw new Exception("error", 500); // 抛出异常
}
public function __destruct() {
echo "__destruct<br />";
}
}
$test = new Test();
$test->test();
方法里抛出异常后,不会调用析构函数:

try异常后能调用析构函数:
<?php
class Test {
public $start;
public $end;
public function __construct() {
echo "__construct<br />";
$this->start = microtime(true);
}
public function test() {
echo "in test()<br />";
try { // try 异常
throw new Exception("error", 500); // 抛出异常
} catch(Exception $e) {
}
}
public function __destruct() {
echo "__destruct<br />";
}
}
$test = new Test();
$test->test();

原文:http://my.oschina.net/banbo/blog/519231