Исключения в PHP try catch, throw и обработка ошибок

Исключения в PHP try catch, throw и обработка ошибок

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

В этой статье разберём, что такое php исключение, как работает try catch, как выбросить исключение в PHP, а также рассмотрим обработку ошибок через Exception.

Что такое PHP исключение и зачем это нужно

Рассмотрим несколько пунктов, примеров ситуаций в которых исключения в php будут полезны:

  • Неверные входные данные/тип данных.
  • Отсутствие файла в нужной директории или отсутствие записи в базе данных.
  • Ошибки бизнес логики.
  • Недопустимые операции.

Что делает с php кодом использование исключений:

  • Код становится более читаемым и логичным.
  • Код более предсказуем.
  • Код более удобен для отладки и поддержки.

PHP исключения Exception

В PHP все исключения основаны на встроенном классе Exception. Он содержит некоторые основные методы:

  • getMessage() — сообщение об ошибке.
  • getCode() — код исключения.
  • getFile() — файл, где возникло исключение.
  • getLine() — строка ошибки.

Рассмотрим пример простейшего вывода исключения и сообщения в нем:

throw new Exception("Произошла ошибка");

PHP выбросить исключение с помощью throw

Чтобы выбросить исключение в PHP, используется ключевое слово throw. Оно останавливает текущее выполнение кода и передаёт управление обработчику исключения.

if ($age < 18) {
    throw new Exception("Доступ запрещён");
}

В этом случае, если условие выполнится, скрипт перейдёт к блоку обработки исключений.

PHP исключения try catch и обработка ошибок

Для перехвата исключений используется конструкция try catch. Код в котором возможно возникновение ошибки, помещается в try, а обработка в catch. Пример базовой обработки будет такой:

try {
    if (!file_exists("data.txt")) {
        throw new Exception("Файл не найден");
    }
} catch (Exception $e) {
    echo $e->getMessage();
}

Как работает этот код:

  • PHP выполняет код внутри try.
  • При возникновении исключения выполнение прерывается.
  • Управление передаётся в catch.

PHP исключения и ошибки в чём разница

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

Ошибки Исключения
Возникают автоматически Создаются вручную
Часто фатальные Можно обработать
Не всегда контролируемы Полностью управляемы

PHP обработка исключения с несколькими catch

PHP поддерживает несколько блоков catch для разных типов исключений:

try {
    // код
} catch (InvalidArgumentException $e) {
    echo "Неверный аргумент: ";
} catch (Exception $e) {
    echo "Общая ошибка: " . $e->getMessage();
}

Подобный подход позволяет более точно реагировать на разные сценарии.

PHP исключения throw с пользовательскими классами

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

class AuthException extends Exception {}

throw new AuthException("Ошибка авторизации");

Ранее в одной из статей мы уже писали про базовые принципы ООП в PHP.

PHP исключения try catch finally

Блок finally выполняется всегда, независимо от того, было исключение или нет:

try {
    // код
} catch (Exception $e) {
    echo $e->getMessage();
} finally {
    echo "Завершение выполнения";
}

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

Заключение статьи про исключения в PHP

PHP исключения — ключевой инструмент для надежной обработки ошибок. Использование throw, try catch и классов Exception позволяет писать устойчивый, понятный и поддерживаемый код. Грамотная обработка исключений в PHP особенно важна при разработке API, интернет-магазинов и сложных веб-приложений.

Тип исключения / ошибки Описание Когда используется
Exception Базовый класс всех исключений в PHP Для выброса и обработки пользовательских и общих исключений
Throwable Интерфейс, объединяющий Exception и Error Для перехвата любых ошибок и исключений
Error Базовый класс фатальных ошибок PHP При критических ошибках выполнения
TypeError Ошибка типа данных Передан аргумент неверного типа
ParseError Ошибка синтаксиса Неверный PHP-синтаксис
ArgumentCountError Неверное количество аргументов Функция вызвана с неправильным числом параметров
ArithmeticError Арифметическая ошибка Деление на ноль, переполнение
DivisionByZeroError Деление на ноль Попытка деления числа на 0
InvalidArgumentException Неверное значение аргумента Некорректные данные функции или метода
RuntimeException Ошибка во время выполнения Проблемы с файлами, БД, сетью
LogicException Ошибка логики программы Неправильное использование классов или методов
OutOfBoundsException Выход за допустимые границы Обращение к несуществующему элементу
OutOfRangeException Значение вне допустимого диапазона Некорректные числовые значения
LengthException Ошибка длины данных Неверная длина строки или массива