这困扰了我一段时间。
当我调用set_error_handler()
时,错误,警告和通知会路由到我的处理程序,而当我调用restore_error_handler()
时,将恢复以前定义的处理程序。但是,在调用exception
之前抛出restore_error_handler()
会发生什么?
我在一个类中定义了以下内容:
function do_something() {
set_error_handler([$this, 'convert_errors_to_exceptions']);
//stuff that may trigger error, e.g.
trigger_error('testing an error');
//will this actually ever be called?
restore_error_handler();
}
public function convert_errors_to_exceptions($num, $message, $file, $line) {
//if error reporting turned off
if (!(error_reporting() & $num)) return false;
//convert to exception - then what happens?
throw new Exception("Error: $message in $file on line $line");
return true;
}
如果触发restore_error_handler()
,是否会调用error
?如果我想让我以前的处理程序实际处理restore_error_handler()
本身,我是否必须在抛出exception
之前立即调用exception
?
推车/马匹问题!