天天看點

php父類析構函數,php析構函數疑惑

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();

方法裡抛出異常後,不會調用析構函數:

php父類析構函數,php析構函數疑惑

報了Fatal error,應該程式就中止運作了,就不會再調析構函數了。

解決方法:

調用類方法時加上try catch捕獲異常,使程式更健壯些:

$test = new Test();

try {

$test->test();

} catch(Exception $e) {

echo $e->getMessage() . "

";

}

php父類析構函數,php析構函數疑惑

析構函數也順利運作了。

其實在java中,未做捕獲異常操作的代碼,編譯就會通不過。而php沒有編譯這步,沒人幫你檢查,是以自己平時寫代碼就要注意些,不然有些代碼平時運作正常,遇到異常抛出時,因為未捕獲就導緻整個程式強制退出,那這樣的代碼還是比較不健壯的。