События и исключения
Используйте события жизненного цикла для интеграции с приложением, а типы исключений — для восстановления на границе, способной обработать сбой.
События жизненного цикла
| Событие | Публичные данные | Момент отправки |
|---|---|---|
FeedStartingEvent | feed, target | После предварительной проверки хранилища и пути, до разрешения конвертера и подготовки файлов. |
FeedFinishedEvent | feed, 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.