Исключения и восстановление
Исключение переносит ошибку к уровню, который способен принять осмысленное решение.
throw new DomainException('Order is closed');Уровни
Доменное правило выбрасывает предметное исключение. Входной адаптер превращает его в HTTP-ответ или сообщение CLI. Сам объект не знает про HTML.
Перехват
Перехватывайте исключение, если можете восстановиться, добавить безопасный контекст или преобразовать тип. Пустой catch скрывает проблему.
finally
finally выполняется независимо от результата и подходит для освобождения ресурса. Транзакцию чаще оформляют явным commit/rollback в try/catch.
Безопасность
Не показывайте production-пользователю stack trace, DSN и локальные пути. Сохраняйте диагностический идентификатор в закрытом журнале.
Задание
Спроектируйте исключения InvalidQuantity и OutOfStock и решите, какие HTTP-коды получает API.
Закрепите материал
Отметка, заметка, чек-лист и ответы остаются в localStorage этого браузера и не отправляются в аналитику.
Связанные материалы
Источники и проверка
- PHP Documentation Group — структурный источник, без внешней ссылки
Последняя содержательная проверка: . Автор-разработчик Михаил Каржин. Методика качества контента.