Это меня давно подвело.
Когда я вызываю 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
?
Проблемы с телегой / лошадью!