博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JDK1.7中新增自动释放资源接口AutoCloseable
阅读量:6422 次
发布时间:2019-06-23

本文共 1747 字,大约阅读时间需要 5 分钟。

hot3.png

新增了try-with-resource 异常声明

在JDK7中只要实现了AutoCloseable或Closeable接口的类或接口,都可以使用try-with-resource来实现异常处理和资源关闭

异常抛出顺序。在Java se 7中的try-with-resource机制中异常的抛出顺序与Java se 7以前的版本有一点不一样。

是先声明的资源后关闭

JDK7以前如果rd.readLine()与rd.close()(在finally块中)都抛出异常则只会抛出finally块中的异常,不会抛出rd.readLine();中的异常。这样经常会导致得到的异常信息不是调用程序想要得到的。

JDK7及以后版本中如果采用try-with-resource机制,如果在try-with-resource声明中抛出异(可能是文件无法打或都文件无法关闭)同时rd.readLine();也势出异常,则只会势出rd.readLine()的异常。

public class Main { //声明资源时要分析好资源关闭顺序,先声明的后关闭 //在try-with-resource中也可以有catch与finally块。 //只是catch与finally块是在处理完try-with-resource后才会执行。 public static void main(String[] args) {  try (Resource res = new Resource();    ResourceOther resOther = new ResourceOther();) {   res.doSome();   resOther.doSome();  } catch (Exception ex) {   ex.printStackTrace();  } } //JDK1.7以前的版本,释放资源的写法 static String readFirstLingFromFile(String path) throws IOException {  BufferedReader br = null;  try {   br = new BufferedReader(new FileReader(path));   return br.readLine();  } catch (IOException e) {   e.printStackTrace();  } finally {   if (br != null)    br.close();  }  return null; } //JDK1.7中的写法,利用AutoCloseable接口 //代码更精练、完全 static String readFirstLineFromFile(String path) throws IOException {  try (BufferedReader br = new BufferedReader(new FileReader(path))) {   return br.readLine();  } }}class Resource implements AutoCloseable { void doSome() {  System.out.println("do something"); } @Override public void close() throws Exception {  System.out.println("resource closed"); }}class ResourceOther implements AutoCloseable { void doSome() {  System.out.println("do something other"); } @Override public void close() throws Exception {  System.out.println("other resource closed"); }}

转载于:https://my.oschina.net/cloudcoder/blog/352266

你可能感兴趣的文章
URL中汉字转码
查看>>
[转]go正则实例
查看>>
Selector中关于顺序的注意事项
查看>>
小黑小波比.清空<div>标签内容
查看>>
Java中的ExceptionInInitializerError异常及解决方法
查看>>
Spring 注入bean时的初始化和销毁操作
查看>>
java线程同步原理(lock,synchronized)
查看>>
MyEclipse中使用Hql编辑器找不到Hibernate.cfg.xml文件解决方法
查看>>
yRadio以及其它
查看>>
第四节 对象和类
查看>>
闪迪(SanDisk)U盘防伪查询(官方网站)
查看>>
Android onMeasure方法介绍
查看>>
无锁数据结构
查看>>
MySQL的变量查看和设置
查看>>
android onNewIntent
查看>>
XML特殊符号
查看>>
kaptcha可配置项
查看>>
JavaMail邮箱验证用户注册
查看>>
系统时间——ntpd
查看>>
反射实现AOP动态代理模式(Spring AOP实现原理)
查看>>