在 catch 子句中访问声明为“try-with”-resource

Posted

技术标签:

【中文标题】在 catch 子句中访问声明为“try-with”-resource【英文标题】:Access declared "try-with"-resource in catch-clause 【发布时间】:2019-12-11 14:06:11 【问题描述】:

我有一个名为“VirtuellTx”的自动关闭类。它是一种特殊的事务,支持“commit()”和“rollback()”方法。如何访问捕获块中声明的“VirtuellTx”资源以执行回滚()?

try (VirtuellTx lVtx = new VirtuellTx()) 
    // do something ...
    lVtx.commit();
 catch (Exception e) 
    lVtx.rollback();

catch-block 无法访问 lVtx:“lVtx 无法解析”

【问题讨论】:

【参考方案1】:

资源仅在 try-with-resources 语句块内的范围内。 JLS says:

在 try-with-resources 语句(第 14.20.3 节)的 ResourceSpecification 中声明的变量的范围是从声明向右到 ResourceSpecification 的其余部分以及与 try-with-resources 关联的整个 try 块声明。

catch 移到里面:

try (VirtuellTx lVtx = new VirtuellTx()) 
  try 
    // do something ...
    lVTX.commit();
   catch (Exception e) 
    lVtx.rollback();
  

【讨论】:

以上是关于在 catch 子句中访问声明为“try-with”-resource的主要内容,如果未能解决你的问题,请参考以下文章

在 axios catch 子句中访问 HTTP 错误正文数据 [重复]

第八周

第八周实验

第八周总结和实验六

第八周课程总结及实验报告

第八周课程总结&实验报告