Обработка ошибок в PHP - важная составляющая разработки приложения. К стандартным классам ошибок в PHP фреймворк HLEB2 добавляет свои собственные. Перехватывая ошибку по её классу или родительскому классу можно определить её тип и пустить выполнение программы по соответствующему пути.
Если вы плохо представляете иерархию ошибок в PHP, предварительно ознакомьтесь со статьёй на эту тему.
Классы собственных ошибок фреймворка находятся в папке /vendor/phphleb/framework/Constructor/Exceptions/ проекта и снабжены описанием. Вот некоторые из них:
Hleb/DatabaseException — Исключение возникло при работе с базой данных при использовании встроенного класса DB фреймворка. Сторонние ORM, используемые в проекте, будут иметь свои классы ошибок.
AsyncExitException — Попытка реализовать обычный exit() в асинхронном режиме с выбросом специальной "ошибки". Неудобством использования может быть сортировка при перехвате и обработке ошибок в коде, так как каждый раз нужно исключать эту ошибку из обработки, пропуская далее. Необходимость вызвана использованием редиректа с использованием header с немедленным завершением исполнения программы.
Hleb\InvalidLogLevelException — Возникает при неправильно указанном уровне логирования.
Следующие классы предназначены для удобства вывода страницы ошибок в контроллерах. Их применение может быть оправдано только до выведения текста на странице, так как код ошибки будет добавлен как обычный HTML-код. Например:
throw new \Hleb\Http404NotFoundException();
Выведет HTML страницы ошибки 404 с соответствующим HTTP-статусом 404.
Таких классов на данное время несколько:
- Hleb\Http400BadRequestException - Этот ответ означает, что сервер не понимает запрос из-за неверного синтаксиса.
- Hleb\Http401UnauthorizedException - Для получения запрашиваемого ответа нужна аутентификация.
- Hleb\Http403ForbiddenException - У клиента нет прав доступа к содержимому, поэтому сервер отказывается дать надлежащий ответ.
- Hleb\Http404NotFoundException - Сервер не может найти запрашиваемый ресурс.
- Hleb\Http406NotAcceptableException - Запрошенный URI не может удовлетворить переданным в заголовке характеристикам.
- Hleb\Http409ConflictException - Запрос не может быть выполнен из-за конфликтного обращения к ресурсу.
- Hleb\Http410GoneException - Такой ответ сервер посылает, если ресурс раньше был по указанному URL, но был удалён и теперь недоступен.
- Hleb\Http500InternalServerErrorException - Этот ответ означает, что возникла ошибка на стороне сервера.