Уроки PHP — Обработка ошибок (возможные типы ошибок)

В сегодняшнем теоретическом уроке мы рассмотрим сложный и важный вопрос в PHP — выявление и осознание ошибок. Поскольку при создании и программировании скриптов и/или веб-приложений существует большая вероятность появления ошибок, не лишним будет знать коды (константы) ошибок и их описание. Эти возможные ошибки будут приведены для вашего удобства в табличном виде. После ознакомления с данным уроком вы будете лучше понимать запись в логах вида:

[ERROR]: [8][E_NOTICE] [Undefined variable: variable][script.php:1]

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

 

Настройка уровня сообщений об ошибках в PHP

Поскольку PHP имеет много уровней ошибок, для их определения нужно использовать функцию error_reporting(), которая определяет, о каких ошибках вам будет сообщено. Ее можно использовать в конфигурационном файле php.ini или непосредственно в файле текущего скрипта. Ниже показаны некоторые варианты настройки этой функции:

<?php
error_reporting(E_ALL); // включить сообщение обо всех ошибках
ini_set("error_reporting", E_ALL); // другой способ включить сообщения обо всех ошибках
error_reporting(E_ERROR | E_PARSE); // включить сообщение только о серьезных ошибках
error_reporting(E_ALL & ~E_NOTICE); // включить все сообщения, кроме уведомлений
error_reporting(0); // отключить сообщение об ошибках
?>

Некоторые пояснения этой записи:

С каждой сгенерированной ошибкой PHP связан определенный тип. Например, тип ошибки E_NOTICE — это не критическая ошибка времени выполнения или потенциальная ошибка. Чтобы исключить ее показ функцией error_reporting(), используется логический оператор НЕ знаком ~ (тильда) (например ~E_NOTICE). То есть запись по умолчанию E_ALL & ~E_NOTICE означает: все ошибки и не оповещения. Знак & — это логический оператор И, а знак | — это логический оператор ИЛИ. Ниже в таблице вы можете увидеть основные типы ошибок и их описание и обозначение.

 

Типы ошибок в PHP и их краткое описание

Значение Константа (код ошибки) Краткое описание Есть возможность перехватить?
1 E_ERROR Фатальные ошибки времени выполнения. Неустранимая ошибка. Выполнение скрипта прекращается Нет
2 E_WARNING Не фатальные (исправимые) ошибки. Выполнение скрипта не прекращается Да
4 E_PARSE Ошибка парсера на этапе компиляции. Должны генерироваться только парсером Нет
8 E_NOTICE Потенциальная ошибка. Уведомления времени выполнения. Указывают на то, что произошло что-то, что может указывать на ошибку Да
16 E_CORE_ERROR Аналогично ошибке E_ERROR, но генерируется ядром PHP Нет
32 E_CORE_WARNING Предупреждения (не фатальные ошибки), — аналогично E_WARNING, но генерируется ядром PHP Нет
64 E_COMPILE_ERROR Фатальные ошибки на этапе компиляции, — аналогично E_ERROR, но генерируется движком Zend Engine Нет
128 E_COMPILE_WARNING Предупреждения на этапе компиляции (не фатальные ошибки), — аналогично E_WARNING, но генерируется движком Zend Engine Нет
256 E_USER_ERROR Сообщения об ошибках, сгенерированные пользователем, — аналогично E_ERROR, но инициируется вызовом функции trigger_error() Да
512 E_USER_WARNING Предупреждения, сгенерированные пользователем, — аналогично E_WARNING, но инициируется вызовом функции trigger_error() Да
1024 E_USER_NOTICE Уведомления, сгенерированные пользователем, — аналогично E_NOTICE, но инициируется вызовом функции trigger_error() Да
2048 E_STRICT Сообщения от исполнительной среды с рекомендациями по улучшению качества кода, что позволит обеспечить лучшее взаимодействие и совместимость кода
4096 E_RECOVERABLE_ERROR Опасная, но не фатальная ошибка (например, несоответствие типа). Такие ошибки указывают, что, вероятно, возникла опасная ситуация, но обработка скриптов стабильна. Если ошибка не обрабатывается функцией, выполнение приложения прерывается Да
8192 E_DEPRECATED Предупреждение об использовании устаревшей функции или конструкции. Включается для того, чтобы вы были предупреждены о коде, который не будет работать в будущих версиях PHP Да
16384 E_USER_DEPRECATED Предупреждение об использовании устаревшей функции или конструкции, инициированное в коде скрипта пользователем, с помощью PHP функции trigger_error() Да
32767 E_ALL Все поддерживаемые ошибки, предупреждения и замечания Нет

 

 

Стандартным обработчиком ошибок для PHP является встроенный обработчик. Но можно изменить обработчик ошибок, чтобы использовать свой специальный обработчик ошибок с помощью функции set_error_handler(). Те ошибки, которые обозначены в таблице как такие, которые возможно перехватить, могут обрабатываться вашей кастомной функцией обработки ошибок. Другие ошибки более сложны и серьезны и должны решаться PHP.

 

На сегодня все, спасибо за внимание!

 

This post was last modified on 30/05/2024 22:08

Последние посты

Гигиена кота: основные правила и рекомендации ветеринаров

Коты относятся к чистоплотным животным — приблизительно половину своей жизни они тратят на «гигиенические процедуры».…

27/08/2024

Брюс Ли

Дисциплина — это не ограничение свободы. Это отсечение всего лишнего Брюс Ли  

25/08/2024

Сборные быстровозводимые дома – основное, что нужно знать

Что-то готовое к употреблению, как пицца или лапша, уже давно заняло почетное место в нашей…

23/08/2024

Популярность, преимущества и сферы применения металлосайдинга

Сегодня акцент на экологическом дизайне и материалах имеет высокие показатели и популярность. Дизайнеры выбирают экологически…

16/08/2024

В чем разница между веб-дизайнером и веб-разработчиком?

Довольно часто не понимают разницу между веб-дизайнерами и веб-разработчиками, и вообще ее наличие. А такая…

15/08/2024

Преимущества обучения в частной школе

Каждый ребенок уникален с неповторимым набором интересов, способностей и талантов. В Киеве частная школа BISU…

14/08/2024