我在__destruct()方法中有一些代码,有时会引发异常。在另一个异常期间调用__destruct()方法,我看到一个模糊的错误:
PHP Fatal error: Ignoring exception from exampleClass::__destruct() while an exception is already active
隐藏了被调用的实际异常。我想做点什么:
public function __destruct()
{
try
{
// do work here
}
catch(Exception $e)
{
// check if we're already in an exception and log it
if(already_in_exception())
{
error_log($e->getMessage());
}
// normal destruct, re-throw
else
{
throw $e;
}
}
}
如果PHP 5.1.6兼容,则获得积分!
先谢谢你了!
答案 0 :(得分:1)
你的问题不是因为你从另一个中抛出异常,而是因为你从析构函数中抛出异常。
来自php.net:http://php.net/manual/en/language.oop5.decon.php我引用:
“注意:尝试从析构函数中抛出异常(在脚本终止时调用)会导致致命错误。”
重新思考你的逻辑,并在解构之前这样做。