Как насчет неопределенных функций в обратных вызовах обработчиков исключений?

Предположим, у меня есть этот фрагмент кода, в котором я пытаюсь убедиться, что все мои ошибки каким-то образом сообщаются, но посетителям не нужно будет видеть, кроме красивой страницы, извиняющейся за ситуацию.

ini_set('display_errors', 'off');

error_reporting(E_ALL);

set_exception_handler('exceptionHandler');

function exceptionHandler($error)
{
// functionWithSyntaxError()
undefinedFunction();
echo $error->getMessage();
}

Если бы я имел functionWithSyntaxError() без комментариев я бы увидел ошибку по поводу синтаксиса. Я предполагаю, что это потому, что код даже не запущен, а компилятор не заботится о моем обработчике исключений или других директивах.

Теперь, если я прокомментирую это и оставлю только undefinedFunction()Я бы не смог записать ошибку о неопределенной функции, либо мой код работал бы дальше. Я не знаю, что происходит, поэтому я должен был бы установить display_errors ON, и в этом случае я не смог бы отобразить свою первоначальную цель: не отображать ошибки, а сообщать о них молча.

Итак, в этом случае я думаю, что компилятор не проверяет неопределенную функцию, как это происходит с синтаксисом. Что происходит в этом случае? Это, конечно, тоже не продолжается. Разве код не должен зацикливаться? Что происходит под капотом?

Я знаю, что у меня есть лучшие варианты для корректной обработки ошибок, например, определения режима отладки (где будут отображаться ошибки), но я просто хочу понять тонкости этой ситуации

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]