如果在循环中抛出异常,则使用 try-with-resources 出现奇怪的“资源泄漏:流永远不会关闭”

2024-03-07

为什么 Eclipse 给出一个奇怪的“资源泄漏:zin 永远不会关闭”即使我使用以下代码,也会发出警告try-with-resources:

Path file = Paths.get("file.zip");
// Resource leak warning!
try (ZipInputStream zin = new ZipInputStream(Files.newInputStream(file))) {
    for (int i = 0; i < 5; i++)
        if (Math.random() < 0.5)
            throw new Exception();
} catch (Exception e) {
    e.printStackTrace();
}

如果我修改代码上的“任何内容”,警告就会消失。下面我列出了3个修改后的版本,这些版本都OK(没有警告)。


Mod #1:如果我删除for循环从try阻止,警告消失:

// This is OK (no warning)
try (ZipInputStream zin = new ZipInputStream(Files.newInputStream(file))) {
    if (Math.random() < 0.5)
        throw new Exception();
} catch (Exception e) {
    e.printStackTrace();
}

Mod #2:如果我保留,也不会发出警告for循环但我去掉了包装纸ZipInputStream:

// This is OK (no warning)
try (InputStream in = Files.newInputStream(file))) {
    for (int i = 0; i < 5; i++)
        if (Math.random() < 0.5)
            throw new Exception();
} catch (Exception e) {
    e.printStackTrace();
}

Mod #3:如果我创建InputStream之外的try-with-resources,也没有警告:

// This is also OK (no warning)
InputStream in = Files.newInputStream(file); // I declare to throw IOException
try (ZipInputStream zin = new ZipInputStream(in)) {
    for (int i = 0; i < 5; i++)
        if (Math.random() < 0.5)
            throw new Exception();
} catch (Exception e) {
    e.printStackTrace();
}

我使用 Eclipse Kepler (4.3.1),但使用 Kepler SR2 (4.3.2) 也得到相同的结果。


这似乎是 Eclipse 中的一个已知错误:[编译器][资源] while 循环内返回时出现错误的资源泄漏问题(资源在finally 块中传递) https://bugs.eclipse.org/bugs/show_bug.cgi?id=371614.

我自己也受到了影响,并在跟踪器上添加了我的投票。

Update:上述bug已在4.5 M7中得到解决。这将包含在 Eclipse 4.5(“Mars”)的最终版本中 - 预计将于 2015 年 6 月 24 日发布。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如果在循环中抛出异常,则使用 try-with-resources 出现奇怪的“资源泄漏:流永远不会关闭” 的相关文章

随机推荐

  • 如何覆盖引导样式

    我创建了轮播 我需要覆盖样式指示器按钮 我有风格 carousel indicators position absolute bottom 10px left 50 z index 1 width 60 padding left 0 mar
  • D2009 TStringlist ansisstring

    夏天的商业平静已经开始 所以我开始迁移到 D2009 我粗略地确定了程序的每个子系统是否应该保留 ascii 或者可以是 unicode 然后开始移植 一切都很顺利 所有组件都在 D2009 版本中 有些组件 如 VSTView 虽然稍微不
  • 如何将多个参数传递给 apply 函数

    我有一个名为 count 的方法 它需要 2 个参数 我需要使用 apply 方法来调用此方法 但是 当我将两个参数传递给 apply 方法时 出现以下错误 类型错误 counting 恰好需要 2 个参数 给定 1 个 我看过以下主题py
  • NSImage 无法缩放

    我正在开发一个快速应用程序 其中我有一种方法可以将 2x 图像重新缩放为常规图像 问题是它没有 Why BOOL createNormalImage NSString inputRetinaImagePath NSImage inputRe
  • 安装 IPython 开发版本后,IPython 笔记本无法启动

    我今天尝试安装 IPython 的开发版本 但是当我运行 ipython Notebook pylab inline 时 我打开一个空笔记本 没有仪表板 只有一个空白页 命令行显示 WARNING tornado access 404 GE
  • 图表未使用 Shiny R 和 NVD3 渲染

    我一直在尝试使用 NVD3 库创建闪亮的时间序列图 我对 R Shiny 和 NVD3 比较陌生 问题是 当我运行 ShinyApp 时 浏览器上没有呈现任何图表 使用 Chromes 开发人员工具 我可以看到 myChart 的 div
  • VBA:如何将不同工作表上的两个范围合并为一个,以循环遍历

    尝试将两个宽度相等但长度不同的范围 每个范围位于不同的纸张上 读取到另一个范围中 我需要按特定顺序循环组合数据 Set wRIL Worksheets INS Set rRIL wRIL Range L2 Set rRIL rRIL Cur
  • 谷歌地图缩小限制[重复]

    这个问题在这里已经有答案了 How do I set zoom out limit on the map it currently lets me zoom out too far to the point that I see multi
  • 安装具有 CRAN 镜像依赖项的本地 R 包

    我已经构建了一个 R 包 即我有 mypackage tar gz 文件 该软件包依赖于其他几个软件包 所有这些软件包都可以从任何 CRAN 镜像下载和安装 现在我想在尚未安装依赖项的系统上安装此软件包 并且我希望在安装软件包时自动下载并安
  • 项目错误:QT 中的未知模块:webkitwidgets [重复]

    这个问题在这里已经有答案了 我正在尝试使用 MXE 在来自本教程 https stackoverflow com questions 14170590 building qt 5 on linux for windows 14170591
  • 使用 dplyr 和 rle 对条件组中的连续值进行计数

    我的问题与下面提出的问题非常相似 但是我想添加一个附加命令以仅返回序列具有超过 2 个连续值的情况 当给定的序列运行在给定的时代和给定的年份内有超过 2 个连续的数字时 如何计算连续 成功 的数量 即 consec 中的 1 个 类似的问题
  • SQL Server 和 MySQL 同步

    我正在与一个在 SQL Server 和 MySQL 之间同步的客户合作 其中包含完全相同的架构和数据 我们希望将这些数据集中到一个数据库中 除了性能和可维护性问题之外 最初的设计还有什么不好的地方呢 您可以使用 MySQL 实例在 SQL
  • Pandas read_csv,读取缺失值指定为 int 的布尔值

    我正在尝试将 csv 导入到 pandas 数据框中 我有用 1 和 0 表示的布尔变量 其中缺失值用 9 标识 当我尝试将 dtype 指定为布尔值时 我会收到许多不同的错误 具体取决于我尝试的内容 示例数据 test csv var1
  • 在 PowerBI 报告中排除周末?

    我在 Power BI 中有一个 VS Team Services 项目的燃尽图 这样我们就可以报告故事点 而不是剩余的工作量 在图表中 X 轴上有日期 有没有办法从图表中过滤掉周末日期 周末没有活动 I found 这个论坛帖子 http
  • 使用 Angular JS 删除 Facebook OAuth 哈希值

    Facebook 喜欢添加 到我们提供的 OAuth 回调 URL 的末尾 虽然我们没有使用基于哈希的导航 但它看起来很烦人 我想摆脱它 location hash 导致无限循环 watch 这也会发生在 window location h
  • 如何在 JSON 响应反应本机上生成动态 UI

    这里我试图生成动态 UI 通过 API 我得到了一些 JSON 格式的响应 我必须在 UI 上绘制它 就像我没有定义任何 TextInput 一样 它应该动态生成 下面是一些示例 JSON 响应 这可能会根据不同的请求而改变 请帮助 我被困
  • 使用 JavaScript 获取 IE9 中的数据列表选项

    这段代码适用于除 Internet Explorer 9 之外的所有主要浏览器 我不明白我做错了什么 这可能是我错过的一些简单的事情 复制此代码 或使用这个jsFiddle http jsfiddle net Jordan PU9BF 在I
  • 长路径 \\?\ 解决方法在某些安装上不起作用

    我正在开发的应用程序需要处理具有很长文件 路径名的文件 这是一个 Net 4 6 应用程序 因此我实现了 4 6 2 之前的解决方法 以允许使用 语法 如概述的here https stackoverflow com questions 4
  • Neo4j Cypher 查询:顺序集合,取前 n 个元素

    我在为这种社交网络类型的应用程序编写 Cypher 查询时遇到问题 它涉及用户添加帖子 本质上是带有描述的图像 用户可以查看这些帖子 在 Cypher 中 图模型是这样的 user WROTE REVIEW gt review EVALUA
  • 如果在循环中抛出异常,则使用 try-with-resources 出现奇怪的“资源泄漏:流永远不会关闭”

    为什么 Eclipse 给出一个奇怪的 资源泄漏 zin 永远不会关闭 即使我使用以下代码 也会发出警告try with resources Path file Paths get file zip Resource leak warnin