Effective Java~9. try-with-resource 优先于 try-catch
try-finally 语句是保证资源正确关闭的最佳方式,但是当添加多个资源时,情况会变糟
// try-finally is ugly when used with more than one resource!
static void copy(String src, String dst) throws IOException {InputStream in = new FileInputStream(src);try {OutputStream out = new FileOutputStream(dst);try {byte[] buf = new byte[BUFFER_SIZE];int n;while ((n = in.read(buf)) >= 0)out.write(buf, 0, n);} finally {out.close();}} finally {in.close();}
}
当 Java 7 引入了 try-with-resources 语句时,所有这些问题一下子都得到了解决。要使用这个构造,资源必须实现 AutoCloseable 接口
// try-with-resources on multiple resources - short and sweet
static void copy(String src, String dst) throws IOException {try (InputStream in = new FileInputStream(src);OutputStream out = new FileOutputStream(dst)) {byte[] buf = new byte[BUFFER_SIZE];int n;while ((n = in.read(buf)) >= 0)out.write(buf, 0, n);}
}
try-with-resources 语句中添加 catch 子句,就像在常规的 try-finally 语句中一样
// try-with-resources with a catch clause
static String firstLineOfFile(String path, String defaultVal) {try (BufferedReader br = new BufferedReader(new FileReader(path))) {return br.readLine();} catch (IOException e) {return defaultVal;}
}
Effective Java~9. try-with-resource 优先于 try-catch相关推荐
- 第 3 次读 Effective Java,这 58 个技巧最值!
点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 来源:Dong GuoChao <Effective ...
- 读完《Effective Java》后,总结了 50 条开发技巧
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | Dong GuoChao 来源 | https ...
- Effective Java读书笔记一:并发
第66条:同步访问共享的可变数据 关键字synchronized可以保证在同一时刻,只有一个线程可以执行某一个方法,或者某一个代码块. 同步不仅可以阻止一个线程看到对象处于不一致的状态中,它还可以保证 ...
- 读完 Effective Java,我整理了 59 条技巧!(含pdf)
点击⬆️方"逆锋起笔",公众号回复 编程资源领取大佬们推荐的学习资料 上一篇:CTO 写低级 Bug,致公司 70 GB 数据泄露! 作者:Dong GuoChao 链接:http ...
- Effective Java(第3版) 90条经验法则
目录 第2章 创建和销毁对象 第1条:用静态工厂方法替代构造器 第2条:遇到多个构造器参数时要考虑使用构建器 例子 使用 第3条:用私有构造器或者枚举类型强化Singleton属性 例子 使用 第4条 ...
- Effective Java读书笔记八:序列化(74-78)
第74条:谨慎地实现Serializable接口 对象序列化API,它提供了一个框架,用来将对象编码成字节流,并从字节流编码中重新构建对象.将一个对象编码成一个字节流,称作将该对象序列化,相反的处理过 ...
- Effective java 总结11 - 序列化
Effective java 总结11 - 序列化 序列化:对象 -> 字节流 反序列化:字节流 -> 对象 第85条 其他方法优先于java序列化 序列化的根本问题在于:攻击面过于庞大, ...
- Effective java 3th-读书笔记
第二章 创建和销毁对象 第1条.用静态工厂方法替代构造器 它只是一个返回类实例的静态方法,不同于设计模式的工厂模式. 优点: 1.静态工厂方法有名称,易读.易用 一个类只能有一个带有指定签名的构造器, ...
- 《Effective Java》真的是一本值得一直去钻研的好书
文章目录 <Effective Java>读书笔记 第一章 引言 第二章 创建和销毁对象 1 考虑使用静态工厂方法替代构造方法** 2 当构造方法参数过多时使用builder(建造者) 模 ...
- [java] JVM监控与调优
原文出处:http://www.cnblogs.com/zhguang/p/java-jvm-gc.html 光说不练假把式,学习Java GC机制的目的是为了实用,也就是为了在JVM出现问题时分 ...
最新文章
- 如何选择最佳技术来加速文件传输!
- 超图js版 iclient 基本开发 - 加载基本图层(以天地图示例)和基本地图控件
- [linux] SIGPIPE信号处理
- Windows10彻底禁止更新
- 计算机课实验三,成都信息工程学院计算机网络课程实验三
- 【javascript】DOM操作方法(3)——document节点属性
- 阿里云ESC服务器数据快速转移至轻量应用服务器
- Python中非纯文本文件的读取
- Chrome JS断点调试技巧
- splay详解(三)
- 【杂谈】需要mark的一些东西
- Axure rp 9 的汉化破解版
- Excel常用功能(持续更新)
- 密室逃脱线上如何精准获客?
- html表格某一行背景颜色设置,HTML表格行背景颜色与浮动属性不一样
- vue 获取当前本机ip_Vue项目启动时自动获取本机IP地址
- Win11微软输入法打不出汉字怎么办?
- Linux学习笔记2—常见指令的使用
- Linux ARM平台开发系列讲解(IIO子系统) 2.8.1 IIO驱动开发分析
- IMT和北京大学微纳电子学研究院持续开展战略合作,三位优秀学生获2017年度MEMS专项奖学金
热门文章
- 基于携程游记的出行领域顺承事件图谱项目
- 论文学习14-End-to-End Relation Extraction using LSTMs on Sequences and Tree Structures(端到端实体关系抽取)
- 工信部推动第二批“5G+工业互联网”实践的通知
- SQL Server 2005: Constraints
- android一体机-迅为10.1寸用于售货机、人机界面、自动终端、触摸控制
- css比较特殊选择器汇总(持续更新)
- 洛谷 P1656 炸铁路
- Tomcat启动时项目重复加载,导致资源初始化两次的问题
- weblogic启动受管服务器报错Authentication for user weblogic denied (weblogic 11g 域账号密码不生效的解决方法)...
- 计算机软考笔记之《数据库基础》