RESOURCE LIFECYCLE LAB
谁是主异常,谁进入 suppressed?
三个资源按 A → B → C 初始化,离开 try 时按 C → B → A 关闭。组合主体失败与关闭失败,逐步观察 Java 怎样保留原始故障。
资源状态与事件顺序
A尚未初始化
B尚未初始化
C尚未初始化
初始化:A → B → C关闭:C → B → A
最终传播结果
等待运行
设置失败组合后,点击“开始执行”。
尚无异常对象
catch 和外层 finally 看到结果时,所有成功初始化的资源都已经尝试关闭。
只关已成功创建的资源初始化失败的资源没有 close;它左侧已成功的资源仍会关闭。
严格逆序关闭后初始化的包装层先关闭,符合资源依赖关系。
主体失败优先主体异常保留为主异常,关闭失败进入 suppressed。
关闭继续进行一个 close 失败,不会阻止其他资源继续尝试关闭。