问题标签 [autocloseable]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
30 浏览

java - Selective catch for a closeable resource

This is more of a syntax / structuring issue. I'm working with JDBC: Statement and ResultSet, which means SQLExceptions are being thrown everywhere.

My code looks like this:

So far so good. But I want to throw a special Exception when myStatement.executeQuery(MY_QUERY) fails, like so:

The problem is, other operations involving ResultSetMetaData may also throw an SQLException, and I do NOT want to wrap those with MySpecialException.

Is there a way such that I can catch only the SQLException coming from query execution, and letting other SQLExceptions be thrown to the method caller? I would also like to properly close ResultSet.

0 投票
1 回答
591 浏览

java - 这是数据库连接和自动关闭资源的正确实现吗?

我有一个程序从 MySQL 数据库表中读取,遍历结果集并返回列表中特定 userId 的行数据。在所有可用的互联网资源的帮助下,我设法创建了一些可行的东西,但我不确定我的实现是否正确。下面是我的 DbConnection 和 DaoImpl 类。

数据库连接.java

TiedostoDaoImpl.java

当我运行程序时,我得到如下输出: 在此处输入图像描述

当我运行程序时,它显示“连接已建立”并返回数据,但它没有说明关闭连接的任何内容。我需要知道我是否正确地实施了这一切。有人可以帮忙吗?

0 投票
2 回答
550 浏览

java - 如何强制 AutoClosable 警告传播到 Java 中的类调用者?

我是 Java 的 AutoClosable 接口的新手(但不是 Java 的新手)。我正在尝试强制请求实例的客户端代码在完成使用后WebDriver关闭driver它(通过调用driver.quit()

我想要一种方法来强制任何实例化实例的方法WebDriver关闭它。

所以我创建了一个实现的新类AutoClosable

现在,我不是直接实例化 WebDriver ( WebDriver driver = new FirefoxDriver()),而是实例化这个类的实例,并让它返回一个实例,WebDriver如下例所示:

当我这样做时,我收到一个警告/错误:Resource leak: 'webDriverLauncher' is never closed

由于我无法关闭此方法中的资源,因为WebDriver调用者方法中正在使用资源(即 ),我想强制调用者launchDriver()关闭driver.

因此,我决定让该方法返回一个实例WebDriverLauncher- 例如以下示例:

这样,调用者将可以访问driver(通过调用webDriverLauncher .getDriver())并被警告关闭资源(所以我想)。

但是,当我尝试这样做时,警告消息完全消失了。换句话说,我不再看到关闭资源的警告——无论是在launchDriver()类/方法中,还是在调用者/客户端类中(正如我所提到的,我希望出现警告,所以任何调用此方法的人都会被警告关闭资源)

我想了解的是以下内容:

1)为什么警告没有传播到调用者类(如果资源从未关闭过)?

2)为什么当我返回时警告消失,但当我返回webDriverLauncher时没有driver

3)有没有办法修改代码以强制警告传播到调用者?(从而警告该方法的调用者关闭资源)

4)如果无法做到这一点,可以做些什么来强制客户端关闭WebDriver

谢谢!

0 投票
2 回答
5233 浏览

apache-poi - Is disposing SXSSFWorkbook necessary when used in try with resource

Below is the sample code snippet to create SXSSFWorkbook:

Here problem is that if I use try with resource then can't dispose() SXSSFWorkbook in finally, as variable wb won't be accessible in finally block.

I wanted know that is disposing of workbook necessary to delete temporary files or since SXSSFWorkbook is AutoCloseable, try with resource will take care of it.

0 投票
1 回答
101 浏览

java - Neo4j 驱动程序在玩

我在我的 play 应用程序中使用 Neo4j java驱动程序。

目前,我为每个控制器(即每个 http 调用)初始化一个新驱动程序。当自动关闭关闭方法运行时,它似乎阻塞了整个调用大约两秒钟。在不关闭驱动程序的情况下运行(显然是个坏主意)将我的测试从 25 秒缩短到 5 秒。

我确实怀疑我以错误的方式使用驱动程序,我想我应该使用一个驱动程序应用程序,但不知道如何。在play框架中使用java Neo4j驱动的正确方法是什么?

0 投票
2 回答
92 浏览

java - 为什么 AutoClosaeble 使用 try/catch 语义?

Java 的AutoCloseable特性“重用”try/catch 语义:

我很好奇为什么他们没有为这个新特性引入新的语义。try意味着您希望主体在某一点或另一个(或它可能)抛出异常。这对我来说似乎与“实例化这个资源并在我完成后关闭它”有很大不同。这与处理异常没有任何关系。为什么不是这样的...

我不想引发争论,我想知道 Java 团队决定重用try此功能的原因。

0 投票
3 回答
1400 浏览

java - AutoCloseable 并抛出异常

AutoCloseable 有一个方法'void close throws Exception'。有人建议扩展此接口并覆盖 close 方法并删除异常。例如,请参见下面的链接。

但是,当我忘记将语句放在 try-with-resources 语句中时,close 方法是否比不调用?

  • 在 try-with-resources 中调用 close
  • 在流 api 中调用 close
  • 例如,在离开创建资源的方法时由 java 自动执行???

我在互联网上搜索并查看了文档的其他信息。两者都建议删除 throws Exception 语句。但我对这个建议的反应是,将来我们项目中的某个人实现了新接口(无一例外)并且忘记将它们放入我们有资源泄漏的 try-with-resource 中。对于我们的项目,这不是一个大问题,因为我们使用的是 SonarQube,它会提到资源泄漏

示例位置:

0 投票
3 回答
730 浏览

java - 实现 AutoCloseable - 我如何知道 try 块中是否发生异常?

我们已经编写了一个类,它打开了与服务器的连接。完成后,您需要告诉它commit是否一切都成功,或者告诉它rollback是否出现问题。所以现在我们的代码中有很多地方看起来像这样:

如果您忘记提交或回滚,则不会立即出现问题,但最终您会耗尽连接池,然后必须找出错误的位置。

我想找到一种方法来OurConnectionClass实现AutoClosable,所以我可以这样做:

我觉得必须有办法做到这一点,但我没有看到它。AutoCloseable只调用一个close方法,不传递任何参数。据我所知,无法知道是否调用了 close 是因为成功到达 try 块的末尾还是抛出了异常。

0 投票
3 回答
804 浏览

java - 自动关闭作为参数传递的资源

如果我想自动关闭作为参数传递的资源,还有比这更优雅的解决方案吗?

理想情况下,我希望自动关闭此资源,而无需声明另一个closeable引用相同对象的变量out

在旁边

我意识到关闭out内部doSomething被认为是一种不好的做法

0 投票
2 回答
108 浏览

java - 在从 LinkedHashMap 中删除对象之前关闭对象是否安全?

我想覆盖 LinkedHashMap 的 removeEldestEntry(Map.Entry) 方法来自动删除陈旧的映射。另外我想清理将被删除的条目。

该条目是一个 AutoCloseable 对象。如果要删除它,我可以调用 close() 吗?如下所示是最佳做法吗?