在 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的主要内容,如果未能解决你的问题,请参考以下文章