Перейти к основному содержимому
Версия: 1.x

События и исключения

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

События жизненного цикла​

СобытиеПубличные данныеМомент отправки
FeedStartingEventfeed, targetПосле предварительной проверки хранилища и пути, до разрешения конвертера и подготовки файлов.
FeedFinishedEventfeed, target, path, pathsПосле успешной публикации всех сгенерированных файлов.

$target содержит ключ цели для целевой генерации и null для обычного фида. FeedFinishedEvent::$paths содержит все опубликованные пути по порядку. $path сохранено для совместимости и всегда содержит первый путь.

Ошибки ввода и поиска​

ИсключениеЗначение
InvalidFeedArgumentExceptionSlug фида в консоли некорректен.
FeedNotFoundExceptionЗапись с запрошенным идентификатором или slug не существует.
Illuminate\Database\MultipleRecordsFoundExceptionУ нескольких неудалённых записей совпадает запрошенный slug.
InvalidExpressionExceptionВыражение расписания некорректно.
UnknownFeedClassExceptionНастроенный класс фида невозможно получить.
UnexpectedClassExceptionПолученный класс не соответствует ожидаемому контракту.

При выборе цели используются исключения SPL. Если передан --target, feed:generate выбрасывает InvalidArgumentException, когда не указан slug регистрации фида, ключ цели пуст либо выбранный фид не реализует HasFeedTargets. Если findTarget() возвращает null, выбрасывается UnexpectedValueException.

Ошибки сериализации и хранилища​

ИсключениеЗначение
InvalidCsvRowExceptionСтрока CSV не соответствует заданной схеме столбцов.
InvalidCsvValueExceptionПоле CSV невозможно сериализовать как скалярное значение.
InvalidXmlCDataExceptionЗначение CDATA некорректно.
InvalidXmlFragmentExceptionНеобработанный фрагмент XML некорректен.
UnsupportedStorageDiskExceptionВыбранный диск Laravel не разрешается в FilesystemAdapter.
OpenFeedExceptionНевозможно открыть черновой ресурс вывода.
WriteFeedExceptionНевозможно полностью записать вывод.
CloseFeedExceptionНевозможно закрыть ресурс вывода.
ResourceMetaExceptionОбязательные метаданные потока недоступны.
FeedGenerationExceptionГенерация конкретного класса фида завершилась ошибкой.

FeedGenerationException::getFeed() возвращает класс фида. getFeedTarget() возвращает ключ цели для целевой генерации и null для обычного фида. Исходная ошибка доступна через getPrevious().

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

Смотрите также​