Java - 带参的异常处理模块try(xxx){...}

2023-11-10

  带资源的try语句(try-with-resource)的最简形式为:

 try(Resource res = xxx)//可指定多个资源
   {
      //do something
   }

  try块退出时,会自动调用res.close()方法,关闭资源。

  其实这样做的原因,主要是为了不在finally里面,嵌套做非空判断以及关闭各种流;其实我们还有其他的办法来在filnally里面关闭流,而且关于非空判断,也会帮我们做掉;

     try{
            fileOutputStream = new FileOutputStream(file);
            printStream = new PrintStream(fileOutputStream);
            //将字符串写入文件
            printStream.println(sb.toString());
        } catch (IOException e) {
            log.error("Exception writing file, please check it. path:{} {}",file.getPath(),e);
        } finally {
            IOUtils.closeQuietly(fileOutputStream);
            IOUtils.closeQuietly(printStream);
        }
  org.apache.commons.io.IOUtils.closeQuietly 方法源码如下: 
    public static void closeQuietly(Closeable closeable) {
        try {
            if (closeable != null) {
                closeable.close();
            }
        } catch (IOException var2) {
        }

    }

     不是很愉快的解决了我们在finally里面嵌套做非空判断的烦恼,而且还继续保持原来的try-cache-finally的代码编写习惯,懒人专用。。。

 

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

Java - 带参的异常处理模块try(xxx){...} 的相关文章

  • OpenJDK 11 问题 - 客户端在上次 UNWRAP 之前完成握手

    我正在将代码库从 Oracle Java 1 8 0 131 迁移到 OpenJDK 11 0 1 我们有实现 nio ssl 套接字通道的代码 在 Java 8 中 客户端 服务器握手工作正常 在 Java 11 中 客户端在解包来自服务
  • Java ASN.1 编译器

    现在我正在使用二进制笔记 http bnotes sourceforge net 解析 ASN 1 文件以在 Java 项目中使用 它采用 ASN 1 定义并生成 Java 类 让我可以操作 ASN 1 文件 我用扩展标记碰壁了 因为它不支
  • 将 hyperjaxb3 升级到 jpa 2.1

    我正在尝试在使用 maven jpa hibernate 和 hyperjaxb 的 eclipse 项目中升级到 JPA 2 1 当我尝试执行以下操作时出现以下错误Run As Run on Server从日食内部 java lang N
  • Android 上 WebRTC 的自定义视频源

    Overview 我想使用自定义视频源通过 WebRTC Android 实现来直播视频 如果我理解正确的话 现有的实现仅支持 Android 手机上的前置和后置摄像头 以下类与此场景相关 Camera1Enumerator java ht
  • 由于 maven-surefire-plugin,Maven 构建失败

    我这里有类似的问题eclipse 中缺少 maven surefire plugin https stackoverflow com questions 23588957 maven surefire plugin missing in e
  • json文件格式的升级路径

    我们将 Java 应用程序的用户首选项存储在 JSON 文件中 使用Jackson http jackson codehaus org 随着我们继续开发该应用程序 我们将添加首选项 重命名首选项并删除过时的首选项 当用户将应用程序升级到下一
  • 传输级别信息与 SOAP 消息命名空间 URI 不匹配

    我收到错误 Transport level information does not match with SOAP Message namespace URI 要求您提供详细信息以解决问题 我在客户端设置了以下内容 HttpTranspo
  • 将 Flash 文件上传与 JSF 集成

    我看到我们可以通过flash文件上传来上传多个文件 喜欢SWF上传 http code google com p swfupload or YUI上传器 http yuilibrary com yui docs uploader 是否可以将
  • 阻止 GWT 中的事件冒泡

    我有以下代码片段 changeTextArea 是一个 TextArea 对象 changeTextArea addKeyboardListener new KeyboardListenerAdapter public void onKey
  • 更改 WireMock __files 目录

    来自docs http wiremock org docs stubbing 要从文件中读取正文内容 请将文件放在 files 下 目录 默认情况下 这应该位于 src test resources 下 从 JUnit 规则运行时 当独立运
  • 从 API Explorer 调用 API 方法时不允许使用范围

    我在 Google App Engine 中有一个奇怪的行为 我正在使用 Eclipse 和 Java 进行开发 特别是使用 Google Cloud Endpoints 我使用以下设置创建了一个示例 API 实际上 我正在使用许多其他示波
  • Java基于参数的同步(名为互斥锁/锁)

    我正在寻找一种根据接收到的参数来同步方法的方法 如下所示 public synchronized void doSomething name some code 我想要方法doSomething同步基于name参数如下 线程 1 doSom
  • 需要使用自定义类而不是在 Web 服务中生成(通过 wsimport)

    您能帮忙解决以下问题吗 当生成 WS 客户端代码 使用 wsimport ant 任务 时 所有类都会在与 Web 服务相同的包 例如 helloservice endpoint 中自动生成 例如如果我的网络服务有方法 公共节点 getNo
  • DOM 中不再存在缓存元素

    就像在类似的问题中一样 我使用appium java 尝试选择元素 在移动应用程序中 我要转到页面 之后有许多元素 android widget ImageView 0 我需要选择 6 个 例如 这样的元素并执行其他步骤 Byt 只能选择一
  • 如何使用 log4j2.xml 配置 hibernate 日志记录?

    我最近切换到 Apache log4j2 但仍然找不到使用 log4j2 xml 配置 hibernate 日志记录的方法 因为我找不到解决此问题的方法 所以我仍然显式使用 log4j properties 文件进行休眠 这不是最好的解决方
  • 异步方法的同步版本

    在 Java 中创建异步方法的同步版本的最佳方法是什么 假设您有一个包含这两种方法的类 asyncDoSomething Starts an asynchronous task onFinishDoSomething Called when
  • 运行外部进程的非阻塞线程

    我创建了一个 Java GUI 应用程序 它充当许多低级外部进程的包装器 该实用程序按原样运行 但迫切需要一项重大改进 我希望我的外部进程以非阻塞方式运行 这将允许我并行服务其他请求 简而言之 我希望能够在生成数据时处理来自外部进程的数据
  • Java 和 SQL Server 中的精度噩梦

    我一直在与 Java 和 SQL Server 中的精确噩梦作斗争 直到我不再知道了 就我个人而言 我理解这个问题及其根本原因 但向地球另一端的客户解释这一点是不可行的 至少对我来说 情况是这样的 我在 SQL Server 中有两列 Qt
  • 切换按钮形状不变

    我正在尝试制作一个带有绿色背景的圆形切换按钮 我用了
  • Spring Data JPA 存储库,具有规范、分页和标准 fetch-join

    我正在使用具有规范和分页功能的 Spring Data JPA 存储库实现实体列表的搜索 过滤服务 我正在尝试减少查询数量 n 1 问题 并使用条件获取机制获取嵌套数据 我有两个实体类 Entity Table name delegatio

随机推荐

  • 接口测试工具-apifox

    Apifox 是 API 文档 API 调试 API Mock API 自动化测试一体化协作平台 定位 Postman Swagger Mock JMeter 通过一套系统 一份数据 解决多个系统之间的数据同步问题 只要定义好 API 文档
  • 将一个网页设置为屏保

    有没有试过将一个网页作为屏保 最近我正好有这个需求 一些需要给家里人经常看到的提示信息 如果定闹钟多了大家嫌烦 我口头提示多了比闹钟还烦 印在A4纸上贴墙上既影响美观又不容易修改内容 打印还要花银子 自己写字又不好看 突然想到我几乎每天早上
  • Unity播放音频

    在Unity中 可以在物体上添加AudioSource组件来播放音频 AudioSource组件可以控制音频文件的播放 音量 音调 空间效果等属性 以下是在物体上添加AudioSource组件的步骤 1 在Unity中打开场景 选择您想要添
  • tensorflow-gpu 2.3.0安装 及 相关对应版本库安装(Anaconda安装)

    目录 如需转载 请标明出处 谢谢 一 安装tensorflow gpu2 3 0 二 配置其他相关的库 很多人以为安装完tensorflow gpu就是一切都结束了 但是殊不知 python中的很多库 比如numpy matplotlib等
  • 【JavaScript数据结构与算法】一、栈及leetcode实战

    栈 栈是一种遵从后进先出 LIFO 原则的有序集合 新添加或待删除的元素都保存在栈的同一端 称作栈顶 另一端就叫栈底 在栈里 新元素都靠近栈顶 旧元素都接近栈底 栈数据结构 我们需要一种数据结构来保存栈里的元素 可以选择数组 数组允许我们在
  • 数据库查询优化 --- 索引 Index

    数据库查询优化 索引 Index 什么是索引 索引的实现方法 聚集索引 和 非聚簇索引 聚集索引 非聚集索引 组合索引 索引的使用 适合使用索引的场景 不适合使用索引的场景 SQL创建索引 什么是索引 没有加索引的数据 它的数据无序的放置在
  • 串级PID与单极PID的区别

    目录 前言 一 什么是串级PID 二 串级PID与单极PID比较 1 控制小车开到某一位置 2 平衡小车速度控制 三 什么时候用串级PID 结语 前言 本文将讲述串级PID与单极PID的区别 并由此引出什么时候用串级PID 对于想深入学习P
  • electron vue3 + ts 初始化项目

    新建 vue3 ts 项目 npm init vitejs app electron demo 选择 vue ts 等待项目创建完成 安装 electron npm i electron D 确认 node modules electron
  • 【C++入门】运算符重载详解

    1 什么是运算符重载 不可重载运算符 运算符含义 成员访问运算符 gt 和 成员指针访问运算符 域运算符 sizeof 长度运算符 条件运算符 预处理符号 1 运算符 运算符分为算术运算符 关系运算符 逻辑运算符 等 2 运算符重载 给运算
  • idea授权服务器

    这里提供一个我已经搭建好的idea授权服务器 http ysk521 cn 1017
  • ctfshow萌新红包题writeup

    ctfshow萌新专属红包题writeup 题目来源 https ctf show 这一题是ctfshow平台上面2月17日更新的一个萌新红包题 当天在官方交流群内知道晚上会有一个萌新红包题之后 就有点期待了 小萌新也想拿一次红包 嘿嘿 下
  • 推挽输出和开漏输出区别

    推挽输出 可以输出高 低电平 连接数字器件 输出 0 时 N MOS 导通 P MOS 高阻 输出0 输出 1 时 N MOS 高阻 P MOS 导通 输出1 不需要外部上拉电路 开漏输出 输出端相当于三极管的集电极 要得到高电平状态需要上
  • 同步代码块、io、file常用的方法、流

    一 同步 1 同步代码块 把要实现线程安全的代码放在同步代码块中 java中任何对象内部都有一个开关 你可以理解为标志位 1就是表示关 0就表示开 2 同步方法 二 io input输入 output输出 计算机中的文件以及文件中的内容 F
  • maven的下载安装配置教程(详细图文)

    maven的下载安装配置教程 详细图文 一 maven的下载 https maven apache org download cgi 下载zip文件 二 maven的安装 注意 maven的安装需要依赖jdk的安装 所以必须先安装完成jdk
  • STM32的PWM相关函数TIM_SetCompare1的一定理解

    void TIM SetCompare1 TIM TypeDef TIMx uint16 t Compare1 Check the parameters assert param IS TIM LIST8 PERIPH TIMx Set t
  • mysql-mmm集群

    一 Mysql mmm集群技术概述 概述 MMM Master Master replication manager for MySQL 是一套支持双主故障切换和双主日常管理的脚本程序 MMM使用Perl语言开发 主要用来监控和管理MySQ
  • RecyclerView(一)—— ListView的使用

    ListView ListView在过去绝对可以称得上是Android中最常用的控件之一 几乎所有的应用程序都会用到它 由于手机屏幕空间比较有限 能够一次性在屏幕上显示的内容并不多 当我们的程序中有大量的数据需要展示的时候 就可以借助Lis
  • vscode给某行代码添加标签

    只有你习惯于一种编程工具风格 vscode几乎都能给你做的 Numbered Bookmarks 数字标签跳转类似与webstrom 定义 Ctrl SHIFT 数字 跳转 Ctrl 数字 vscode给某行代码添加标签 标注 用于代码间快
  • Qt使用QJSEngine执行脚本

    有时候需要进行一些计算 程序是使用c 来实现的 使用c 来进行计算不是很灵活 这时候可以使用脚本来进行计算 这样灵活 且易于扩展 写了一个简单的Demo进行验证 具体例子如下 include
  • Java - 带参的异常处理模块try(xxx){...}

    带资源的try语句 try with resource 的最简形式为 try Resource res xxx 可指定多个资源 do something try块退出时 会自动调用res close 方法 关闭资源 其实这样做的原因 主要是