class Test {
public function __construct() {
echo "__construct
";
}
public function test() {
echo "in test()
";
throw new Exception("error", 500); // 抛出异常
}
public function __destruct() {
echo "__destruct
";
}
}
$test = new Test();
$test->test();
方法里抛出异常后,不会调用析构函数:
报了Fatal error,应该程序就中止运行了,就不会再调析构函数了。
解决方法:
调用类方法时加上try catch捕获异常,使程序更健壮些:
$test = new Test();
try {
$test->test();
} catch(Exception $e) {
echo $e->getMessage() . "
";
}
析构函数也顺利运行了。
其实在java中,未做捕获异常操作的代码,编译就会通不过。而php没有编译这步,没人帮你检查,所以自己平时写代码就要注意些,不然有些代码平时运行正常,遇到异常抛出时,因为未捕获就导致整个程序强制退出,那这样的代码还是比较不健壮的。