当前位置: 首页 > 知识库问答 >
问题:

eclipse中的资源泄漏警告

浦泳
2023-03-14

Eclipse中,我收到了一个警告Resource Leak:“ps”在这个位置没有关闭,我不明白这一点。

try {
    if(condition) {
        ps = c.prepareStatement("UPDATE 1 ...");
    } else {
        ps = c.prepareStatement("UPDATE 2 ...");
    }
    ps.executeUpdate();
} catch (SQLException e) {
    // exception handling
} finally {
    if (null != ps) 
        try { 
            ps.close(); 
        } catch (SQLException e) { 
            // exception handling
        };
}

这是理解问题还是java/eclipse问题?

共有1个答案

邵飞宇
2023-03-14

如果有此警告,那么您正在使用Java7。在这种情况下,您不应该自己关闭实现AutoClosable的资源。您应该在tryStatementCommented的特殊初始化部分中初始化这些资源:

// decide which update statement you need:
// (your if should be here)
String update = ....;
try (
     ps = c.prepareStatement(update);
) {
   // use prepared statement here.
} catch (SQLException) {
   // log your exception
   throw new RuntimeException(e);
}
// no finally block is needed. The resource will be closed automatically.

我确实不知道为什么if/else语句的存在会导致警告出现或消失。但是Java7推荐使用我上面描述的自动关闭资源的方法,所以尝试一下这个方法。

 类似资料:
  • 我使用一个用不同长度的不同值填充字节数组。我使用方法。由于此方法继承自,因此可能会引发IOException。在中有一个方法不会引发IOException,因此我扩展了并覆盖方法,该方法现在也不会引发IOException: 对于扩展类,我在eclipse 4.5.1中得到了资源泄漏的警告,因为我没有关闭代码中的流。的情况并非如此。我的扩展类有什么问题,或者我需要添加什么来删除警告?我知道我可以将

  • Eclipse Java警告:资源泄漏:“Unassigned Closeable Value”从不关闭 漏在哪里?

  • eclipse“潜在资源泄漏”警告不正确。 没有警告: 警告:潜在资源泄漏:“此位置可能未关闭响应” 为什么第二种方法会引起警告? 谢谢!

  • 我是个新手。我已经编写了这段代码,它显示那里存在资源泄漏 这是什么意思?抱歉,我太天真了。

  • 我正在读取一个文件并将其内容存储在字符串中。代码给了我一个警告:Resource leak:。我如何解决它?