跳到主要内容
版本:1.x

事件与异常

使用生命周期事件与应用集成,并在能够处理失败的边界使用异常类型进行恢复。

生命周期事件​

事件公共数据分发时机
FeedStartingEventfeed、target存储和路径预检完成后、解析转换器和开始暂存之前。
FeedFinishedEventfeed、target、path、paths所有生成文件成功发布之后。

对于目标生成,$target 包含目标键;对于普通 Feed,其值为 null。FeedFinishedEvent::$paths 按顺序包含所有已发布路径。为保持兼容性而保留的 $path 始终包含第一个路径。

输入与查找失败​

异常含义
InvalidFeedArgumentException控制台 Feed slug 无效。
FeedNotFoundException请求的 Feed ID 或 slug 没有对应注册记录。
Illuminate\Database\MultipleRecordsFoundException多条未删除的注册记录具有请求的 slug。
InvalidExpressionException调度表达式无效。
UnknownFeedClassException无法解析配置的 Feed 类。
UnexpectedClassException解析出的类不符合预期契约。

目标选择使用 SPL 异常。提供 --target 时,如果未提供 Feed 注册 slug、目标键为空,或者所选 Feed 未实现 HasFeedTargets,feed:generate 会抛出 InvalidArgumentException。当 findTarget() 返回 null 时,会抛出 UnexpectedValueException。

序列化与存储失败​

异常含义
InvalidCsvRowExceptionCSV 行不符合已建立的列结构。
InvalidCsvValueExceptionCSV 字段无法序列化为标量值。
InvalidXmlCDataExceptionCDATA 值无效。
InvalidXmlFragmentException原始 XML 片段无效。
UnsupportedStorageDiskException所选 Laravel 磁盘无法解析为 FilesystemAdapter。
OpenFeedException无法打开草稿输出资源。
WriteFeedException无法写入完整输出。
CloseFeedException无法关闭输出资源。
ResourceMetaException所需的流元数据不可用。
FeedGenerationException指定 Feed 类生成失败。

FeedGenerationException::getFeed() 返回 Feed 类。getFeedTarget() 为目标生成返回目标键,为普通 Feed 返回 null。可通过 getPrevious() 访问原始异常。

只在应用能够添加恢复逻辑或面向用户的上下文时捕获异常。无法恢复的生成失败应交给 Laravel 报告。

另请参阅​