问题标签 [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.
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
.
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
?
谢谢!
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.
java - Neo4j 驱动程序在玩
我在我的 play 应用程序中使用 Neo4j java驱动程序。
目前,我为每个控制器(即每个 http 调用)初始化一个新驱动程序。当自动关闭关闭方法运行时,它似乎阻塞了整个调用大约两秒钟。在不关闭驱动程序的情况下运行(显然是个坏主意)将我的测试从 25 秒缩短到 5 秒。
我确实怀疑我以错误的方式使用驱动程序,我想我应该使用一个驱动程序应用程序,但不知道如何。在play框架中使用java Neo4j驱动的正确方法是什么?
java - 为什么 AutoClosaeble 使用 try/catch 语义?
Java 的AutoCloseable
特性“重用”try/catch 语义:
我很好奇为什么他们没有为这个新特性引入新的语义。try
意味着您希望主体在某一点或另一个(或它可能)抛出异常。这对我来说似乎与“实例化这个资源并在我完成后关闭它”有很大不同。这与处理异常没有任何关系。为什么不是这样的...
我不想引发争论,我想知道 Java 团队决定重用try
此功能的原因。
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,它会提到资源泄漏
示例位置:
java - 实现 AutoCloseable - 我如何知道 try 块中是否发生异常?
我们已经编写了一个类,它打开了与服务器的连接。完成后,您需要告诉它commit
是否一切都成功,或者告诉它rollback
是否出现问题。所以现在我们的代码中有很多地方看起来像这样:
如果您忘记提交或回滚,则不会立即出现问题,但最终您会耗尽连接池,然后必须找出错误的位置。
我想找到一种方法来OurConnectionClass
实现AutoClosable
,所以我可以这样做:
我觉得必须有办法做到这一点,但我没有看到它。AutoCloseable
只调用一个close
方法,不传递任何参数。据我所知,无法知道是否调用了 close 是因为成功到达 try 块的末尾还是抛出了异常。
java - 自动关闭作为参数传递的资源
如果我想自动关闭作为参数传递的资源,还有比这更优雅的解决方案吗?
理想情况下,我希望自动关闭此资源,而无需声明另一个closeable
引用相同对象的变量out
。
在旁边
我意识到关闭out
内部doSomething
被认为是一种不好的做法
java - 在从 LinkedHashMap 中删除对象之前关闭对象是否安全?
我想覆盖 LinkedHashMap 的 removeEldestEntry(Map.Entry) 方法来自动删除陈旧的映射。另外我想清理将被删除的条目。
该条目是一个 AutoCloseable 对象。如果要删除它,我可以调用 close() 吗?如下所示是最佳做法吗?