Java中如何通过try优雅地释放资源?

简介:

Java中如何通过try优雅地释放资源?

时间紧迫,长话短说,今天,小明给大家同步一个知识点,使用try-with-resources来优雅地关闭资源。

  1. 背景
    其实,在JDK 7就已经引入了对try-with-resources的支持,它的主要作用就是解放小明和小明小伙伴们的双手,帮助我们自动释放使用过的资源(比如输入、输出流)。
  2. 例子
    如何才能使用这个自动关闭资源的骚操作呢?我们只需要在try内声明和初始化资源即可,如下所示:

这样,当我们写入文件时,只需要将心思放在输入的内容就行啦。

3.使用try-with-resources的好处
在很久很久以前,你是不是和小明一样每每操作输入流、输出流的时候,用的都是try-catch-finally代码块?

现在,答应我好嘛,作为小明的小伙伴,看完这篇文章后,再写代码时,不要再将就,务必使用try-with-resources会更小明(优雅)一些。

接下来,我们简单地做个比较:

之前的小明

点评
整体感觉很传统,很冗长。

现在的小明

点评
整体感觉很轻巧,很优雅。

  1. 还可以控制多个资源哦
    如果我们想一边控制输入、一边控制输出怎么办?

通通放进去!如图所示

5.幕后功臣:Closeable
为什么把资源放进try-with-resources,我们就可以束手旁观,高枕无忧呢?原来,要想合法进去try-with-resources,不被报警,是需要门票的:实现Closeable或AutoCloseable接口,并重写close方法。就像这样:

6.多个资源的情况下如何顺序关闭呢?
剧透:先创建的资源,最后关闭。

这个故事是这样讲的:小明和小红一起打王者荣耀……

小明:

小红:

全军出击:

故事纵览:

提问:结局是不是和剧透一致?

  1. 补充
    我们使用try-with-resources的时候不仅可以优雅地释放资源,而且还可以传统一些,照常使用catch和finally哦。
  2. 总结
    经过小明这么一番生动的讲解:

你是否知道了什么是try-with-resources?

你是否知道了如何用try-with-resources替换try-catch-finally?

你是否知道了AutoCloseable构建自定义资源以及关闭资源的顺序?

附Github源码地址:https://github.com/WhenCoding/coder-xiaoming

原文地址https://www.cnblogs.com/coderxx/p/12690161.html

相关文章
|
6月前
|
Java
Java文件拷贝和释放资源
Java文件拷贝和释放资源
21 0
|
5月前
|
Java 程序员 编译器
[java进阶]——异常详解,try catch捕获异常,抛出异常
[java进阶]——异常详解,try catch捕获异常,抛出异常
|
10月前
|
Java 数据库连接
【Java基础】[异常处理]try,catch,finally
【Java基础】[异常处理]try,catch,finally
|
安全 Java
Java语法糖 : 使用 try-with-resources 语句安全地释放资源
使用 try-with-resources 语句自动关闭资源的类都实现了AutoCloseable 接口。
195 0
Java语法糖 : 使用 try-with-resources 语句安全地释放资源
|
安全 Java 数据库连接
Java中的异常处理详解(try、catch、finally、throw、throws)
Java中的异常处理详解(try、catch、finally、throw、throws)
258 1
Java try 与 finally 对于返回值的影响
Java try 与 finally 对于返回值的影响
105 0
Java try 与 finally 对于返回值的影响
|
Java 编译器
Java - try、catch、finally(包含 return)
Java - try、catch、finally(包含 return)
177 0
|
Java
【学习笔记】【Java】try-catch-finally中,finally是在什么时候执行的:try结束、catch结束、return前
结论:try-catch-finally中,finally执行:try结束、catch结束、return前
158 0
【学习笔记】【Java】try-catch-finally中,finally是在什么时候执行的:try结束、catch结束、return前
|
Java
java中try-catch另外一种用法:try(){}语法使用
今天读代码发现一个try-catch与我们平时写的方式不太一样,如下: try (ZipFile apkFile = new ZipFile(apk)) { ... } catch (Exception e) { e.printStackTrace(); }
164 0