You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java带资源的try语句:资源关闭顺序及代码运行结果问询

分析带资源try语句的运行结果与资源关闭顺序

咱们一步步拆解这段代码的运行流程,看看最终输出和背后的规则:

  1. 程序进入try-with-resources块,先完成MyResource1 r1和MyResource2 r2的初始化,然后执行try块内的代码,输出 T 。
  2. try块执行完成后,触发资源关闭逻辑——这里是核心规则:带资源的try语句,资源关闭顺序是声明顺序的逆序。所以先关闭后声明的r2,它的close()方法抛出IOException。
  3. 紧接着关闭先声明的r1,它的close()方法正常执行,输出 1 。
  4. r2关闭时抛出的异常被后续catch块捕获,执行catch内代码输出 IOE 。
  5. 最后执行finally块的代码,输出 F 。

所以这段代码的最终运行结果是:

T 1 IOE F 

带资源try语句的资源关闭关键规则

  • 逆序关闭:在try括号里先声明的资源,会被最后关闭;后声明的资源,会被最先关闭。比如本例中r1先声明、r2后声明,关闭时先关r2,再关r1。
  • 异常不阻断关闭:即使某一个资源的close()方法抛出异常,其他未关闭的资源仍然会被尝试关闭,不会因为前面的异常而终止关闭操作。

内容的提问来源于stack exchange,提问作者dileepVikram

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:13:46