Перейти к основному содержимому

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

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

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

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

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

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

ИсключениеЗначение
InvalidFeedArgumentExceptionИдентификатор фида в консоли некорректен.
FeedNotFoundExceptionЗапись с запрошенным идентификатором не существует.
InvalidExpressionExceptionВыражение расписания некорректно.
UnknownFeedClassExceptionНастроенный класс фида невозможно получить.
UnexpectedClassExceptionПолученный класс не соответствует ожидаемому контракту.

При выборе цели используются исключения SPL. Если передан --target, feed:generate выбрасывает InvalidArgumentException, когда не указан идентификатор регистрации фида, ключ цели пуст либо выбранный фид не реализует 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.

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