java7增强的try语句关闭资源

传统的关闭资源方式
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
class Student implements Serializable {
private String name;
public Student(String name) {
this.name = name;
}
}
public class test2 {
public static void main(String[] args) throws Exception {
Student s = new Student("WJY");
Student s2 = null;
ObjectOutputStream oos = null;
ObjectInputStream ois = null;
try {
//创建对象输出流
oos = new ObjectOutputStream(new FileOutputStream("b.bin"));
//创建对象输入流
ois = new ObjectInputStream(new FileInputStream("b.bin"));
//序列化java对象
oos.writeObject(s);
oos.flush();
//反序列化java对象
s2 = (Student) ois.readObject();
} finally { //使用finally块回收资源
if (oos != null) {
try {
oos.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
if (ois != null) {
try {
ois.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
}
}
使用finally块来关闭物理资源,保证关闭操作总是会被执行。
关闭每个资源之前首先保证引用该资源的引用变量不为null。
为每一个物理资源使用单独的try...catch块来关闭资源,保证关闭资源时引发的异常不会影响其他资源的关闭。
以上方式导致finally块代码十分臃肿,程序的可读性降低。
java7增强的try语句关闭资源
为了解决以上传统方式的问题, Java7新增了自动关闭资源的try语句。它允许在try关键字后紧跟一对圆括号,里面可以声明、初始化一个或多个资源,此处的资源指的是那些必须在程序结束时显示关闭的资源(数据库连接、网络连接等),try语句会在该语句结束时自动关闭这些资源。
public class test2 {
public static void main(String[] args) throws Exception {
Student s = new Student("WJY");
Student s2 = null;
try (//创建对象输出流
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("b.bin"));
//创建对象输入流
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("b.bin"));
)
{
//序列化java对象
oos.writeObject(s);
oos.flush();
//反序列化java对象
s2 = (Student) ois.readObject();
}
}
}
自动关闭资源的try语句相当于包含了隐式的finally块(用于关闭资源),因此这个try语句可以既没有catch块,也没有finally块。
注意:
被自动关闭的资源必须实现Closeable或AutoCloseable接口。(Closeable是AutoCloseable的子接口,Closeeable接口里的close()方法声明抛出了IOException,;AutoCloseable接口里的close()方法声明抛出了Exception)
被关闭的资源必须放在try语句后的圆括号中声明、初始化。如果程序有需要自动关闭资源的try语句后可以带多个catch块和一个finally块。
Java7几乎把所有的“资源类”(包括文件IO的各种类,JDBC编程的Connection、Statement等接口……)进行了改写,改写后的资源类都实现了AutoCloseable或Closeable接口
以上这篇浅谈java7增强的try语句关闭资源就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
# java
# try语句
# Java如何实现自定义异常类
# Java抛出异常与自定义异常类应用示例
# Java自定义异常类的实例详解
# java面试try-with-resources问题解答
# Java使用 try-with-resources 实现自动关闭资源的方法
# Java异常--常见方法--自定义异常--增强try(try-with-resources)详解
# 自动关闭
# 序列化
# 多个
# 给大家
# 结束时
# 抛出
# 放在
# 会在
# 希望能
# 不为
# 这篇
# 指的是
# 浅谈
# 小编
# 大家多多
# 进行了
# 实现了
# 包含了
# 隐式
# 新增了
相关文章:
如何选择长沙网站建站模板?H5响应式与品牌定制哪个更优?
太原网站制作公司有哪些,网约车营运证查询官网?
网站海报制作教学视频教程,有什么免费的高清可商用图片网站,用于海报设计?
免费公司网站制作软件,如何申请免费主页空间做自己的网站?
如何在阿里云香港服务器快速搭建网站?
如何在七牛云存储上搭建网站并设置自定义域名?
如何通过IIS搭建网站并配置访问权限?
网站设计制作企业有哪些,抖音官网主页怎么设置?
如何通过可视化优化提升建站效果?
如何在橙子建站上传落地页?操作指南详解
音响网站制作视频教程,隆霸音响官方网站?
如何在建站宝盒中设置产品搜索功能?
广东专业制作网站有哪些,广东省能源集团有限公司官网?
头像制作网站在线制作软件,dw网页背景图像怎么设置?
c# 在高并发场景下,委托和接口调用的性能对比
定制建站模板如何实现SEO优化与智能系统配置?18字教程
如何获取上海专业网站定制建站电话?
网站制作多少钱一个,建一个论坛网站大约需要多少钱?
无锡营销型网站制作公司,无锡网选车牌流程?
专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?
临沂网站制作企业,临沂第三中学官方网站?
东莞专业网站制作公司有哪些,东莞招聘网站哪个好?
如何用西部建站助手快速创建专业网站?
上海制作企业网站有哪些,上海有哪些网站可以让企业免费发布招聘信息?
行程制作网站有哪些,第三方机票电子行程单怎么开?
C#如何在一个XML文件中查找并替换文本内容
如何在沈阳梯子盘古建站优化SEO排名与功能模块?
IOS倒计时设置UIButton标题title的抖动问题
自助网站制作软件,个人如何自助建网站?
专业的网站制作设计是什么,如何制作一个企业网站,建设网站的基本步骤有哪些?
设计网站制作公司有哪些,制作网页教程?
建站主机功能解析:服务器选择与快速搭建指南
建站为何优先选择香港服务器?
专业商城网站制作公司有哪些,pi商城官网是哪个?
如何快速搭建个人网站并优化SEO?
网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?
电商网站制作公司有哪些,1688网是什么意思?
广州商城建站系统开发成本与周期如何控制?
建站之星2.7模板:企业网站建设与h5定制设计专题
图册素材网站设计制作软件,图册的导出方式有几种?
网站企业制作流程,用什么语言做企业网站比较好?
如何快速辨别茅台真假?关键步骤解析
C++时间戳转换成日期时间的步骤和示例代码
建站之星与建站宝盒如何选择最佳方案?
魔方云NAT建站如何实现端口转发?
如何挑选最适合建站的高性能VPS主机?
5种Android数据存储方式汇总
制作公司内部网站有哪些,内网如何建网站?
建站主机默认首页配置指南:核心功能与访问路径优化
金*站制作公司有哪些,金华教育集团官网?
*请认真填写需求信息,我们会在24小时内与您取得联系。