RESOURCE LIFECYCLE LAB

谁是主异常,谁进入 suppressed?

三个资源按 A → B → C 初始化,离开 try 时按 C → B → A 关闭。组合主体失败与关闭失败,逐步观察 Java 怎样保留原始故障。

try 主体
关闭失败
初始化失败

资源状态与事件顺序

A尚未初始化
B尚未初始化
C尚未初始化
初始化:A → B → C关闭:C → B → A

最终传播结果

等待运行

设置失败组合后,点击“开始执行”。

尚无异常对象
catch 和外层 finally 看到结果时,所有成功初始化的资源都已经尝试关闭。
只关已成功创建的资源初始化失败的资源没有 close;它左侧已成功的资源仍会关闭。
严格逆序关闭后初始化的包装层先关闭,符合资源依赖关系。
主体失败优先主体异常保留为主异常,关闭失败进入 suppressed。
关闭继续进行一个 close 失败,不会阻止其他资源继续尝试关闭。