问题标签 [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 - 为什么我们必须在 try-with-resource 块中声明和定义资源?
以上工作正常。但是当我这样做时
它抛出错误。为什么会这样?我正在测试这个新功能,我认为我会采用第二种方法,然后try-catch statement
打印资源PrintWriter f
- 如果 try-with-resource 语句按预期工作,它应该为空。为什么不允许第二种方式?
另外我如何通过方法1对其进行测试?
jdbc - pre JAVA 7 JDBC API 是否与 JAVA 7 一起使用资源?
只是将应用程序转换为 JAVA 7 并想知道是否有人在尝试使用资源和 c3p0 连接池时遇到问题。
我猜现在JAVA会自动关闭数据库,准备好的语句和语句,如果你使用try with resources的话。
是不是说JDBC驱动、c3p0等底层API必须实现AutoClosable?
我正在使用 c3p0 0.9.2.1 和 jtds 1.3.0
java - 如何防止 try-with-resources 从 lines() 关闭 BufferedReader (Stream)?
这就是我正在做的事情,以防止 a在 a 中完成BufferedReader
时被关闭:lines()
try-with-resources
这是一个通用实用程序,它可以在很多阅读器上运行,而不仅仅是文件..
有没有更好的控制方法,以便关闭Stream<String>
不关闭Bufferedreader
?
根据下面的评论尝试一个 normal try
,它看起来像这样:
这似乎更好:)
java - 为什么获取`Stream时BufferedReader没有关闭` 在 try-with-resources 中?
Stream
在 try-with-resources 中使用 a时,应关闭阅读器。
鉴于这种:
...阅读器没有被关闭??
此测试失败:
exception-handling - 如何处理 let 绑定或正文中发生的异常
如何let
使用相同的 finally 块处理语句的绑定或正文中可能发生的异常?前任:
如果失败(create-connections)
,(dostuff)
我想(close connections)
。一些选项:
选项1:
这显然不起作用,因为connections
它不在 finally 块的范围内。
选项 2:
此选项仅捕获在(destuff)
调用中发生的异常,而不是在(create-connections)
.
选项 3:
这也不起作用,因为connections
它不在 let 绑定中的 finally 语句的范围内。
那么处理这个问题的最佳方法是什么?
java - 我的 AutoCloseable.close() 实现可以检测到潜在的异常吗?
在使用 Java 7 try-with-resources 语句实现 anAutoCloseable
时,我想知道 try 块中是否存在异常。例如:
为了说明这一点:
现在,从了解try-with-resources 语句如何转换为 bytecode,我想这是不可能的。但是是否有任何(可靠的!)技巧通过检测/反射/一些未记录的编译器功能允许我RuntimeException
从内部访问上述内容AutoCloseable.close()
?
注意:我是 API 设计人员,我无法控制 API 使用者的 try-with-resources 代码。因此必须在AutoCloseable
现场进行实施
java - 如果实现 AutoCloseable,帮助调用 close()?
JDK 或通用库中是否有任何辅助方法可以执行此操作:
close()
如果适用,只需一条线即可调用对象。
我知道try-with-resources,这不适用于这种情况。而且我知道并非所有具有close()
方法的类都实现AutoCloseable
. 但是,我似乎一遍又一遍地写上面的内容..
java - 工厂创建的实例的自动关闭“资源泄漏”警告?
我在 Eclipse for AutoCloseable
s 中收到的这些“资源泄漏”警告似乎是救命稻草。
但是,如何让它们为工厂创建的实例工作?
例如(a
有效,但b
无效):
有没有我可以坚持的注释newResource()
或者我可以做些什么来让编译器(或者它是 Eclipse?)知道所有权的变化?
java - Eclipse 不一致:资源泄漏:'' 永远不会关闭
如果我有以下代码:
Eclipse 将黄色波浪线置于下方new FileOutputStream("test.txt")
,并向我显示以下警告:
Resource leak: '<unassigned Closeable value>' is never closed
奇怪的是,如果我去掉三元运算:
警告消失。
这是 Eclipse 中的不一致(错误?)还是我错过了这两种场景之间的一些根本区别?
一般来说,Eclipse 似乎足够聪明,可以理解当我Closeable
从方法返回 a 时,可以不让方法关闭流(毕竟,返回关闭的流有什么意义?)。当我间接返回结果时,它甚至可以正确执行此操作:
(这里没有警告)
那么,Eclipse 只是被三元运算搞糊涂了吗?如果是这样,我应该将此报告为错误吗?
另一个奇怪的事情:
如果我替换FileOutputStream
为ByteArrayOutputStream
,警告也会消失:
为什么它以不同的方式处理这两个流?两者都是直接继承OutputStream
并实现完全相同的接口 ( Closeable
, Flushable
, AutoCloseable
)。它是否以某种方式知道这ByteArrayOutputStream.close()
是一个空操作?如果是这样,是硬编码到 Eclipse 中还是它实际上解析源代码或字节码来解决这个问题?