为什么此代码会生成“潜在资源泄漏”警告?

2024-04-04

Eclipse (Juno) 给出以下警告:

潜在的资源泄漏:“os”可能未关闭

在第一行try这段代码中的主体:

static void saveDetails(byte[] detailsData) {
    OutputStream os = null;
    try {
        os = sContext.openFileOutput(DETAILS_FILE_NAME, Context.MODE_PRIVATE);
        os.write(detailsData);
    } catch (IOException e) {
        Log.w(LOG_TAG, "Unable to save details", e);
    } finally {
        if (os != null) {
            try {
                os.close();
            } catch (IOException ignored) {
            }
        }
    }
}

方法openFileOutput被声明抛出一个FileNotFoundException.

这是误报吗?这看起来像是一个相当普通的执行路径分析。


在我看来,这是误报。您的资源在“finally”块中关闭,因此我看不出这里会出现什么问题。

作为旁注,如果您使用 Java 7,我建议使用“try-with-resources”习惯用法。

static void saveDetails(byte[] detailsData) {    
    try (OutputStream os = sContext.openFileOutput(DETAILS_FILE_NAME, Context.MODE_PRIVATE);) {
        os = sContext.openFileOutput(DETAILS_FILE_NAME, Context.MODE_PRIVATE);
        os.write(detailsData);
    } catch (IOException e) {
        Log.w(LOG_TAG, "Unable to save details", e);
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么此代码会生成“潜在资源泄漏”警告? 的相关文章

  • 如何自定义BlockingQueue的阻塞行为

    我想创建一个阻塞队列 它根据自定义规则而不是队列中的项目数量来阻止生产者 例如 生产者生成一些文件并放入队列中 消费者经过一番分析后将它们转移到特定位置 对于上述场景 如果队列中的总文件大小达到某个阈值 我希望生产者等待生成新文件 如果总大
  • Firebase 查询 Or'ing whereEqualTo 以获得可能值的列表

    我见过之前针对早期版本的 Firebase 提出过这个问题 https stackoverflow com questions 26700924 query based on multiple where clauses in fireba
  • V8 如何管理它的堆?

    我知道V8的垃圾收集在工作时 会从GC的root开始追踪 这样无法到达的对象就会被标记然后被清除 我的问题是GC是如何遍历那些对象的 必须有一个数据结构来存储所有可达或不可达的对象 位图 链接表 顺便说一句 JVM 也做同样的事情吗 艾伦秀
  • Java/JAXB:将具有相同名称但不同属性值的 XML 元素解组到不同的类成员

    我正在尝试根据其属性之一将具有多个 Fields 元素的 XML 解析为不同的类成员 这是 XML
  • 使用多个构造函数创建不可变类

    我正在阅读这一页 https docs oracle com javase tutorial essential concurrency imstrat html关于在 Java 中创建不可变类 并决定根据页面上概述的规范修改我正在编写的类
  • C/C++ 代码的预处理器指令 #ifndef

    在 Eclipse 中 每当我创建一个新的 C 类 或者C头文件中 我得到以下类型的结构 假设我创建头文件 example h 我得到 Comments ifndef EXAMPLE H define EXAMPLE H Place to
  • 方法不必要地被调用?

    我有一个 BaseActivity 它可以通过其他所有活动进行扩展 问题是 每当用户离开 暂停 活动时 我都会将音乐静音 我也不再接听电话 问题是 onPause每当用户在活动之间切换时就会被调用 这意味着应用程序不必要地静音和停止tele
  • @PreUpdate 不适用于 Spring Data JPA

    我有一个实体 Entity EntityListeners MyEntityListener class class MyEntity 还有听者 class MyEntityListener PrePersist PreUpdate pub
  • 在气球内显示带有照片的多个地标的最佳做法是什么?

    我有一个项目如下 从手机上拍摄几张照片 将照片保存在网络系统中 然后将照片显示在其中的谷歌地球上 我读过很多文章 但它们都使用 fetchKml 我读过的一篇好文章是使用 php 但使用 fetchKml 我不知道是否可以使用 parseK
  • Java:检查给定日期是否在当前月份内

    我需要检查给定的日期是否在当前月份 我编写了以下代码 但 IDE 提醒我getMonth https docs oracle com javase 7 docs api java util Date html getMonth and ge
  • 业务代表与服务定位器

    Business Delegate 和 Service Locator 之间有什么区别 两者都负责封装查找和创建机制 如果 Business Delegate 使用 Service Locator 来隐藏查找和创建机制 那么 Busines
  • Java 的 QP 求解器 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何使用 Java 原生接口从 Java 调用 Go 函数?

    可以通过以下方式调用 C 方法JNA https en wikipedia org wiki Java Native AccessJava 中的接口 如何使用 Go 实现相同的功能 package main import fmt impor
  • .class 与 .java

    class 文件和 java 文件有什么区别 我正在尝试让我的小程序工作 但目前我只能在 Eclipse 中运行它 还不能嵌入 HTML 谢谢 编辑 那么如何使用 JVM 进行编译呢 class 文件是编译后的 java 文件 java 都
  • 使用外部硬盘写入和存储 mysql 数据库

    我已经设置了 mysql 数据库在我的 Mac 上使用 java 和 eclipse 运行 它运行得很好 但现在我将生成大约 43 亿行数据 这将占用大约 64GB 的数据 我存储了大量的密钥和加密值 我有一个 1TB 外部我想用作存储位置
  • 通用 JSF 实体转换器[重复]

    这个问题在这里已经有答案了 我正在编写我的第一个 Java EE 6 Web 应用程序作为学习练习 我没有使用框架 只是使用 JPA 2 0 EJB 3 1 和 JSF 2 0 我有一个自定义转换器 用于将存储在 SelectOne 组件中
  • 哪种 Java DOM 包装器是最好或最受欢迎的? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 用 Java 创建迷宫求解算法

    我被分配了用 Java 创建迷宫求解器的任务 这是任务 Write an application that finds a path through a maze The maze should be read from a file A
  • 使用 Maven 3 时 Cobertura 代码覆盖率为 0%

    读完这篇文章后 将 Cobertura 与 Maven 3 0 2 一起使用的正确方法是什么 https stackoverflow com questions 6931360 what is the proper way to use c
  • 什么是 C++11 扩展 [-Wc++11-extensions]

    我需要一些帮助来了解此错误发生的位置 警告 非静态数据成员的类内初始化是 C 11 扩展 Wc 11 extensions 这是它来自的代码部分 typedef struct Hand bool straight false bool fl

随机推荐

  • 如何在 PHP 中获取两个日期之间的所有月份?

    我有 2 个约会 我想获得所有月份的总天数 我怎样才能在 PHP 中做到这一点 例如 date1 2013 11 13 yy mm dd format date2 2014 02 14 Output Months Total Days 11
  • C# 上的 DllImport

    如何在 C 中访问 C DLL 的函数 以下是 DLL 的原型 NOMANGLE int CCONV SSPSendCommand SSP COMMAND cmd SSP COMMAND INFO sspInfo NOMANGLE int
  • 使用 ~(波形符)导入 SCSS 文件在 Angular 6 中不起作用

    我有两个问题scssAngular6 中的文件导入 我需要将我的部分内容导入到我的所有内容中吗 component scss在全局中导入一次后的文件src sass styles scss 导入一次还不够吗 我如何导入SCSS使用导入快捷方
  • 浮点除以零而不是 constexpr

    编译时 constexpr double x 123 0 constexpr double y x 0 0 std cout lt lt x lt lt 0 lt lt y lt lt n 编译器 gcc 4 9 2 std c 11 或
  • 在 Dart 中进行系统调用?

    我想从 dart 内部执行 python 或 java 类 以下是我从 stackoverflow 问题 Java 中使用的片段 Runtime currentRuntime Runtime getRuntime Process execu
  • 计算相机近平面和远平面边界

    我正在尝试执行中提到的计算使用 THREE Frustum 计算近 远平面顶点 https stackoverflow com questions 12018710 calculate near far plane vertices usi
  • 用css根据屏幕尺寸制作圆形图像

    我正在尝试将我的图像制作为圆形 尽管该图像具有不同的宽度和高度 但我希望它是圆形 看起来它们具有相同的宽度和高度长度 例如 我的图像尺寸 250X300 但我希望它是200X200圆 实际上我可以轻松做到这一点 问题是根据屏幕尺寸执行此操作
  • 即使连接了硬件键盘也显示 iPhone 软键盘

    我的 iPad 应用程序使用充当硬件键盘的外部 设备 但是 在设置中的某个时刻 我需要输入文本 但无法使用 设备 设备 不是键盘 那么 即使我连接了硬件键盘 有没有办法强制弹出软键盘 是的 当用户拥有与设备配对的蓝牙扫描仪 键盘 时 我们已
  • 通过 MediatR PipelineBehavior 进行单元测试验证

    我正在使用 FluentValidation 和 MediatR PipelineBehavior 来验证 CQRS 请求 我应该如何在单元测试中测试这种行为 Use the 测试扩展 https docs fluentvalidation
  • Java中不使用队列的二叉树右视图

    HERE http www geeksforgeeks org print right view binary tree 2 是不使用队列的二叉树右视图的C 实现 当我尝试将其转换为 Java 时 它不起作用 这是我的Java代码 我认为很
  • 如何修复 cordova 构建错误:不支持的类文件主要版本 62 [重复]

    这个问题在这里已经有答案了 我运行时收到此错误cordova build android在我的Mac上 FAILURE Build failed with an exception Where Script Users ad8kunle M
  • “触发快照依赖项的更改”似乎无法正常工作

    我正在将 TeamCity 6 5 1 与一个项目和大约 10 个构建配置一起使用 我有一个类似于 Core gt Framework gt Apps 的依赖链 Framework 依赖于 Core App 也依赖于 Core 和 Fram
  • Python 中的主成分分析

    我想使用主成分分析 PCA 来降维 numpy 或 scipy 是否已经有了它 或者我必须使用自己的numpy linalg eigh http docs scipy org doc numpy reference generated nu
  • 将nicedit textarea内容保存到mysql数据库中

    我是个新手 所以我希望有一个非常清晰的解释 提前致谢 我在网站上使用 nicedit textarea 要读取的信息可能包含 只是纯文本 用户格式 文字和图像在一起 我正在使用 mysql 数据库 但我不知道如何以以下方式保存 textar
  • 如何确定 ::before 是否应用于元素?

    我有这个简单的 html 代码 我需要能够确定 before 是否应用于 icon player flash div i class icon player html5 i i class icon player none i i clas
  • R.string.value 帮助 android 通知

    怎么了 CharSequence contentTitle R string value 错误无法从 int 转换为 CharSequence 有办法解决这个问题还是我错过了什么 我试过 String s R string value Ch
  • 如何计算元素的高度?

    我正在通过 XML 数据生成 pdf 文件 我计算段落元素的高度为 float paraWidth 0 0f for Object o el getChunks paraWidth Chunk o getWidthPoint float p
  • 如果我们在java中只声明一个变量而不进行初始化,那么内存中会发生什么?

    如果我们只是创建一个引用变量或为原始数据类型或引用数据类型声明一个变量而不使用任何值进行初始化 如下所示 那么内存中会发生什么 int x Employee emp 那么在这两种情况下 内存中究竟发生了什么 在此阶段是否分配了任何内存 或者
  • Titanium ImageView 无法显示图像?

    我在 UI 文件夹中的项目中创建了一个图像目录来放置我的图像 所以目前完整路径是Resources UI Images 当我创建图像视图时 它不会显示图像 我尝试了不同的选项 甚至是网络图像 但没有任何效果 var self Ti UI c
  • 为什么此代码会生成“潜在资源泄漏”警告?

    Eclipse Juno 给出以下警告 潜在的资源泄漏 os 可能未关闭 在第一行try这段代码中的主体 static void saveDetails byte detailsData OutputStream os null try o