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

Это очень просто в PHP для обработки ошибок.

Использование функции die()

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

Попробуйте привести пример без файла / tmp / test.xt и с этим файлом.

<?php
   if(!file_exists ("/ tmp /test.txt")) {
     die("File not found");
   } else {
      $file = fopen("/ tmp / test.txt" , "r " );
        print "Opend file sucessfully";
   }
   // Test of the code here.
?>

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

Определение пользовательской функции обработки ошибок

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

Эта функция должна иметь возможность обрабатывать минимум два параметра (уровень ошибки и сообщение об ошибке), но может принимать до пяти параметров (опционально: файл, номер строки и контекст ошибки) -

Синтаксис

error_function(error_level,error_message, error_file,error_line,error_context);

# Параметр Описание
1error_levelОбязательный параметр - задает уровень отчета об ошибке для пользовательской ошибки. Значение должно быть числом.
2error_messageОбязательный параметр - указывает сообщение об ошибке для пользовательской ошибки
3error_fileНеобязательный. Указывает имя файла, в котором произошла ошибка.
4error_lineНеобязательный. Указывает номер строки, в которой произошла ошибка.
5error_contextНеобязательный. Указывает массив, содержащий каждую переменную, и их значения, используемые при возникновении ошибки.

Возможные уровни ошибок

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

# Константа Описание Значение
1.E_ERRORНеустранимая ошибки во время выполнения. Выполнение сценария останавливается1
2E_WARNINGНефатальные ошибки во время выполнения. Выполнение скрипта не останавливается2
3E_PARSEОшибки анализа времени компиляции. Ошибки анализа должны генерироваться только парсером.4
4E_NOTICEУведомления о времени выполнения. Скрипт нашел что-то, что может быть ошибкой, но может также произойти при обычном сценарии8
5E_CORE_ERRORНеустранимая ошибки, возникающие во время первоначального запуска PHP.16
6E_CORE_WARNINGНефатальные ошибки во время выполнения. Это происходит во время первоначального запуска PHP.32
7E_USER_ERRORНеустранимая пользовательская ошибка. Это похоже на набор E_ERROR программиста, использующий функцию PHP trigger_error()256
8E_USER_WARNINGНефатальное пользовательское предупреждение. Это похоже на E_WARNING, установленный программистом с использованием функции PHP trigger_error()512
9E_USER_NOTICEПользовательское уведомление. Это похоже на набор E_NOTICE, заданный программистом с использованием функции PHP trigger_error()1024
10E_STRICTУведомления о времени выполнения. Включите, чтобы PHP предлагал изменения в вашем коде, что обеспечит лучшую совместимость и передовую совместимость вашего кода.2048
11E_RECOVERABLE_ERRORЛовкая ошибка. Это похоже на E_ERROR, но может быть захвачен определяемым пользователем дескриптором (см. Также set_error_handler())4096
12E_ALLВсе ошибки и предупреждения, кроме уровня E_STRICT(E_STRICT будет частью E_ALL с PHP 6.0)8191

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

int error_reporting ([ int $ level])

Ниже приведен способ создания одной функции обработки ошибок -

<?php
   function handleError($errno, $errstr,$error_file,$error_line) {
      echo "<b>Error:</b> [$errno] $errstr - $error_file:$error_line";
      echo "
";
      echo "Terminating PHP Script";
      die();
   }
?>

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

<?php
   error_reporting( E_ERROR );
   function handleError($errno, $errstr,$error_file,$error_line) {
      echo "<b>Error:</b> [$errno] $errstr - $error_file:$error_line";
      echo "
";
      echo "Terminating PHP Script";
      die();
   }
   //set error handler
   set_error_handler("handleError");
   //trigger error
   myFunction();
?>

Обработка исключений

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

  • Try - функция, использующая исключение, должна находиться в блоке «try». Если исключение не запускается, код будет продолжен как обычно. Однако, если исключение инициируется, исключение «бросается».
  • Throw - это то , как вы вызываете исключение. Каждый «бросок» должен иметь хотя бы один «улов».
  • Catch. Блок «catch» извлекает исключение и создает объект, содержащий информацию об исключении.
  • Когда генерируется исключение, код, следующий за оператором, не будет выполнен, а PHP попытается найти первый соответствующий блок catch. Если исключение не поймано, PHP Fatal Error будет выпущена с помощью «Uncaught Exception ...»
  • Исключение может быть выброшено, и поймал ( « пойманный ») в PHP. Код может быть окружен в блоке try.
  • Каждая попытка должна иметь по крайней мере один соответствующий блок catch. Для блокировки различных классов исключений можно использовать несколько блоков catch.
  • Исключения могут быть сброшены (или повторно выбраны) в блоке catch.
пример

Ниже приведен фрагмент кода, скопируйте и вставьте этот код в файл и проверьте результат.

<?php
   try {
      $error = 'Always throw this error';
      throw new Exception($error);
      // Code following an exception is not executed.
      echo 'Never executed';
   }catch (Exception $e) {
      echo 'Caught exception: ',  $e->getMessage(), "\n";
   }
   // Continue execution
   echo 'Hello World';
?>

В приведенном выше примере функция $e->getMessage используется для получения сообщения об ошибке. Существуют следующие функции, которые могут использоваться из класса Exception.

  • GetMessage() - сообщение об исключении
  • GetCode() - код исключения
  • GetFile() - исходное имя файла
  • GetLine() - исходная строка
  • GetTrace() - n массив backtrace()
  • GetTraceAsString() - сформированная строка трассировки

Создание настраиваемого обработчика исключений

Вы можете определить собственный собственный обработчик исключений. Используйте следующую функцию для установки пользовательской функции обработчика исключений.

string set_exception_handler(callback $exception_handler)

Здесь exception_handler - это имя вызываемой функции, когда происходит неперехваченное исключение. Эта функция должна быть определена перед вызовом set_exception_handler().

пример
<?php
   function exception_handler($exception) {
      echo "Uncaught exception: " , $exception->getMessage(), "\n";
   }
   set_exception_handler('exception_handler');
   throw new Exception('Uncaught Exception');
   echo "Not Executed\n";
?>

 С уважением, авторы сайта Компьютерапия




Понравилась статья? Поделитесь ею с друзьями и напишите отзыв в комментариях!

Предыдущие статьи

We use cookies on our website. Some of them are essential for the operation of the site, while others help us to improve this site and the user experience (tracking cookies). You can decide for yourself whether you want to allow cookies or not. Please note that if you reject them, you may not be able to use all the functionalities of the site.

Ok