PHP: Пользовательский обработчик ошибок - обрабатывающий синтаксический анализ и фатальные ошибки

Согласно этот статья:

  • JavaScript является языком сценариев, разработанным Связью Netscape, разработанной для разработки интернет-приложений клиента и сервера. Netscape Navigator разработан для интерпретации JavaScript, встроенного в Веб-страницы. JavaScript независим от языка Java Микросистемы Sun.

  • Microsoft JScript является открытым внедрением JavaScript Netscape. JScript является высокоэффективным языком сценариев, разработанным для создания активного онлайн-контента для Всемирной паутины. JScript позволяет разработчикам связывать и автоматизировать большое разнообразие объектов в Веб-страницах, включая программы Java и элементы управления ActiveX. Microsoft Internet Explorer разработан для интерпретации JScript, встроенного в Веб-страницы.

54
задан A.N.M. Saiful Islam 14 December 2009 в 00:57
поделиться

2 ответа

Простой ответ: вы не можете. См. Руководство :

Следующие типы ошибок не могут быть обрабатывается пользовательской функцией: E_ERROR, E_PARSE, E_CORE_ERROR, E_CORE_WARNING, E_COMPILE_ERROR, E_COMPILE_WARNING и большая часть E_STRICT возникает в файле, где вызывается set_error_handler ().

Для каждой другой ошибки вы можете использовать set_error_handler ()

РЕДАКТИРОВАТЬ:

Поскольку кажется, что есть некоторые обсуждения по этой теме в отношении использования register_shutdown_function , мы должны взглянуть на определение обработки: Для меня обработка ошибки означает обнаружение ошибки и реагирование "приятным" для пользователя и базовых данных (базы данных, файлы, веб-службы и т. д.).

Используя register_shutdown_function , вы не можете обработать ошибку из кода, из которого она была вызвана, то есть код все равно перестанет работать в точке, где возникла ошибка происходит. Однако вы можете представить пользователю сообщение об ошибке вместо белой страницы, но вы не можете, например,

28
ответ дан 7 November 2019 в 07:44
поделиться

Вы можете отслеживать эти ошибки, используя такой код:

(Ошибки парсинга могут быть пойманы только если они встречаются в файлах сценария других с помощью include() или require(), или поместив этот код в auto_prepend_file, как упоминалось в других ответах. )

function shutdown() {
    $isError = false;

    if ($error = error_get_last()){
    switch($error['type']){
        case E_ERROR:
        case E_CORE_ERROR:
        case E_COMPILE_ERROR:
        case E_USER_ERROR:
            $isError = true;
            break;
        }
    }

    if ($isError){
        var_dump ($error);//do whatever you need with it
    }
}

register_shutdown_function('shutdown');
30
ответ дан 7 November 2019 в 07:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: