Как управлять отчетами об ошибках в PHP?

Как выучить PHP Изучение

В этом кратком совете по отчетам об ошибках PHP мы рассмотрим, как использовать инструменты, доступные в PHP, для контролируемой обработки ошибок и, таким образом, экономии часов отладки.

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

Например:

<?php
  echo $sitepoint;

Приведенный выше код вернет следующее сообщение:

Notice: Undefined variable: sitepoint in PHP shell code on line 1

PHP выдаст только уведомление об ошибке и с радостью продолжит выполнение. Язык с большим количеством исключений, такой как Python, выдаст ошибку и остановит выполнение.

Из-за такого поведения разработчики PHP должны быть особенно осторожны при написании своего кода. Могут возникнуть непредвиденные результаты при выполнении программ, поскольку уведомления не останавливают выполнение, но могут повлиять на правильное поведение программы.

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

PHP имеет три основных типа сообщений: ошибкиуведомления и предупреждения. Они представляют различные уровни серьезности: E_ERROR, E_NOTICE, и E_WARNING.

  • Ошибки являются фатальными ошибками времени выполнения и обычно вызваны ошибками в коде. Это приведет к остановке выполнения PHP.
  • Уведомления — это сообщения, вызванные кодом, который может вызывать или не вызывать проблемы (например, неопределенная переменная). Это не приведет к остановке выполнения.
  • Предупреждения являются нефатальными ошибками, и выполнение скрипта не будет остановлено.

Регистрация ошибок в PHP

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

В этом файле мы можем дополнительно указать PHP, хотим ли мы также регистрировать уведомления и предупреждения, и где этот журнал должен быть записан.

Также есть возможность инициировать ведение журнала из кода. Для этого мы можем использовать error_log()функцию.

Изменение отчетов об ошибках PHP

Мы можем изменить поведение отчетов об ошибках PHP по умолчанию, используя error_reporting()функцию. С помощью этой функции мы можем установить уровень ошибок на время работы скрипта. Это делается путем передачи одной или нескольких предопределенных констант ошибки в функцию.

Например, если мы хотим видеть не только ошибки, но и уведомления, мы можем использовать это:

<?php
error_Reporting(E_ERROR | E_NOTICE);

С этим объявлением выполнение скрипта будет остановлено не только для ошибок, но и для уведомлений.

Подавление ошибок

Мы также можем указать PHP подавлять определенные ошибки, используя оператор контроля ошибок ( @). Поместив этот оператор в начало выражения, любая ошибка, являющаяся прямым результатом этого выражения, будет заглушена:

<?php
echo @$sitepoint;

Это выведет значение, $sitepointесли оно существует, но вернет NULLи ничего не напечатает (вместо того, чтобы выдать уведомление), если это не так.

Будьте очень осторожны при использовании этого оператора, так как он полностью скроет ошибку. Ошибка не только не будет отображаться, но и не будет отправлена ​​в журнал ошибок.

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

PHP как язык с большим количеством исключений

Наконец, PHP также можно использовать как язык программирования с большим количеством исключений. Обычные ошибки PHP могут вызываться как исключения при использовании ErrorExceptionкласса, который расширяет Exceptionкласс PHP.

В следующем примере вызываемая пользователем функция errorhandler()устанавливается в качестве обработчика ошибок с помощью set_error_handler()функции. Он выдает, ErrorExceptionкогда возникает фатальная ошибка, потому что файл не найден с помощью file_get_contents()функции:

<?php
function errorHandler($severity, $message, $file, $line) {
   if (!(error_reporting() & $severity)) {
      return;
   }
   throw new ErrorException("Fatal Error:No such file or directory", 0, E_ERROR);
}

set_error_handler("errorHandler");

try {
   $data=file_get_contents("sitepoint.txt");
   echo $data;
} catch (ErrorException $e) {
   echo $e->getMessage();
}

Используя этот метод, мы можем обрабатывать ошибки выполнения так же, как мы обрабатываем исключения, заключая их в try…catchинструкцию с соответствующими инструкциями о том, как вести себя в таких ситуациях.

Заключение

Подводя итог, PHP может очень свободно обрабатывать ошибки. Мы, разработчики, должны использовать доступные инструменты, чтобы лучше справляться с ними, чтобы мы могли максимально использовать возможности языка. Используя этот набор инструментов, мы можем контролируемо обрабатывать ошибки, экономя таким образом часы отладки.

Читайте также:  Что означает ошибка 404 в Nginx?
Оцените статью
bestprogrammer.ru
Добавить комментарий