После авторизации Вы получите доступ к файлам, скрытым материалам сайта, исходным кодам
возможность комментировать и т.д.

Вы можете авторизоваться на сайте всего одним кликом:

2016-08-10
Основы PHP → Обработка исключительных ситуаций
PHP, Обработка ошибок, Исключения, Исключительные ситуации

Что произойдет если в Вашей программе появится ошибка? А если не одна, а сразу много? Ответы на эти вопросы Вы получите в этом уроке.

Что такое исключения?

Предположим, что Вы разрабатываете большой проект, состоящий из множества файлов, которые подключают друг друга и запускают различные процессы. И где-то в коде присутствует вероятность принятия методом нуля и деления на него, что несомненно вызовет ошибку. Грамотным способом обработки возможной ошибки станет прерывание текущей операции и возвращение к цепочке вызываемых подпрограмм. Для этого в PHP реализован общепринятый метод обработки исключительных ситуаций, использующий конструкцию языка, называемую блоком try/throw/catch, и класс исключений Exception.

Благодаря им реализуется генерация исключения с помощью оператора throw и его перехват оператором catch. Сам код программы, генерирующий исключение, помещается в блок try. Все генерируемые кодом внутри блока исключения "ловятся" операторами catch, расположенными сразу после блока try. Вот пример такой конструкции:

<?php
function inver($var) {
    if (!$var) {
        //Передаем в конструктор сообщение об ошибке
        throw new Exception('Деление на нуль');
    }
    return 1/$var;
}

try {
    echo inver(4) . "\n";
    echo inver(0) . "\n";
} catch (Exception $e) {
    echo 'Сгенерированно исключение: ',  $e->getMessage(), "\n";
}

// Продолжение выполнения
echo "Здравствуй, мир! \n";
?>

В этом примере мы поместили в блок try функцию inver(), которая делает всего одну операцию - вычисляет обратное значение переданного ей параметра $var и, если значение $var равно нулю, генерирует исключение с помощью такого выражения:

throw new Exception('Деление на нуль');

Результат выполнения данного примера:

0.25
Сгенерированно исключение: Деление на ноль
Здравствуй, мир!

Каждый блок try должен иметь как минимум один соответствующий ему блок catch, а каждый сгенерированный исключительной ситуацией объект должен принадлежать классу Exception либо его расширению.

Методы класса Exception:

  1. getCode() - Возвращает код ошибки, заданный конструктором объекта исключения.
  2. getMessage() - Выводит сообщение об ошибке, заданное конструктором объекта исключения.
  3. getFile() - Возвращает полный путь к файлу программы, сгенерировавшей исключение.
  4. getLine() - Выводит номер строкив файле программы, в которой была сгенерированна ошибка.
  5. getTrace() - Возвращает массив с полными данными о местонахождении источника исключения.
  6. getTraceAsString() - Выдает ту же информацию, что и getTrace(), но в виде форматированной строки.
  7. __toString() - отображает всю информацию в объекте исключения, включающую все, что выводят перечисленные выше методы.

Завершение курса

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

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

523
0
Пожалуйста, авторизируйтесь, чтобы скачать архив с файлами урока