"; } 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没有编译这步,没人帮你检查,所以自己平时写代码就要注意些,不然有些代码平时运行正常,遇到异常抛出时,因为未捕获就导致整个程序强制退出,那这样的代码还是比较不健壮的。