课程表

Java 基础教程

Java 面向对象

Java 高级教程

工具箱
速查手册

Java 9 try-with-resources

当前位置:免费教程 » Java相关 » Java

try-with-resources 是 JDK 7 中一个新的异常处理机制,它能够很容易地关闭在 try-catch 语句块中使用的资源。所谓的资源(resource)是指在程序完成后,必须关闭的对象。try-with-resources 语句确保了每个资源在语句结束时关闭。所有实现了 java.lang.AutoCloseable 接口(其中,它包括实现了 java.io.Closeable 的所有对象),可以使用作为资源。

try-with-resources 声明在 JDK 9 已得到改进。如果你已经有一个资源是 final 或等效于 final 变量,您可以在 try-with-resources 语句中使用该变量,而无需在 try-with-resources 语句中声明一个新变量。

  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.Reader;
  4. import java.io.StringReader;
  5.  
  6. public class Tester {
  7.    public static void main(String[] args) throws IOException {
  8.       System.out.println(readData("test"));
  9.    } 
  10.    static String readData(String message) throws IOException {
  11.       Reader inputString = new StringReader(message);
  12.       BufferedReader br = new BufferedReader(inputString);
  13.       try (BufferedReader br1 = br) {
  14.          return br1.readLine();
  15.       }
  16.    }
  17. }

输出结果为:

  1. test

以上实例中我们需要在 try 语句块中声明资源 br1,然后才能使用它。

在 Java 9 中,我们不需要声明资源 br1 就可以使用它,并得到相同的结果。

  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.Reader;
  4. import java.io.StringReader;
  5.  
  6. public class Tester {
  7.    public static void main(String[] args) throws IOException {
  8.       System.out.println(readData("test"));
  9.    } 
  10.    static String readData(String message) throws IOException {
  11.       Reader inputString = new StringReader(message);
  12.       BufferedReader br = new BufferedReader(inputString);
  13.       try (br) {
  14.          return br.readLine();
  15.       }
  16.    }
  17. }

执行输出结果为:

  1. test

在处理必须关闭的资源时,使用try-with-resources语句替代try-finally语句。 生成的代码更简洁,更清晰,并且生成的异常更有用。 try-with-resources语句在编写必须关闭资源的代码时会更容易,也不会出错,而使用try-finally语句实际上是不可能的。

转载本站内容时,请务必注明来自W3xue,违者必究。
 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号