КОГДА вызывать restore_error_handler ()? - PullRequest
0 голосов
/ 08 января 2019

Это меня давно подвело.

Когда я вызываю 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?

Проблемы с телегой / лошадью!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...