gpt4 book ai didi

java - 为什么 Java 提示我的 try-with-resources block ?

转载 作者:行者123 更新时间:2023-11-30 02:37:06 25 4
gpt4 key购买 nike

我有一个 IncomingTrackHandlerFactory (ith<​​),它分发 IncomingTrackHandler 的实例。这些实例实现了 AutoCloseable。 IncomingTrackHandler 处理数据库,并且生命周期很短。每个实例仅用于几次查询,然后被丢弃。

我不明白为什么第一段代码不起作用。为什么 Java 告诉我它“无法找到 ith<​​ 的符号”?我只是在 try block 之前声明 ith ,以便在出现异常并且必须回滚数据库事务时也能够拥有 ith 变量。

我错过了什么?

<小时/>

Non working code

<小时/>

Working code

<小时/>

最佳答案

您的 ith<​​ 对象仅在 try block 内可见,并且是 AutoCloseable 的实例。该实例在外部、catch、finally 或 catch block 中都不可见。当抛出异常或完成 try block 时,第 i 个资源会自动关闭。虽然可以捕获异常本身,但不能对第一个对象本身进行操作,只能在 try block 内进行操作。

要使用rollback函数,您必须在其中声明另一个try-catch block 。 (由于源代码是图像格式,因此省略了原始代码示例)

try(Object<AutoCloseable> smth = source.get())
{
try {
// operate on smth
} catch (Exception e)
{
smth.rollback();
}
}

有关更多信息,请查看https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html

关于java - 为什么 Java 提示我的 try-with-resources block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42762769/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com