Java教程
+ -

Java Java 9 改进的 try-with-resources

2019-09-09 3 0

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 语句中声明一个新变量。

实例

import java.io.BufferedReader;
import java.io.IOException;
import java.io.Reader;
import java.io.StringReader;
public class Tester {
   public static void main(String[] args) throws IOException {
      System.out.println(readData("test"));
   } 
   static String readData(String message) throws IOException {
      Reader inputString = new StringReader(message);
      BufferedReader br = new BufferedReader(inputString);
      try (BufferedReader br1 = br) {
         return br1.readLine();
      }
   }
}

输出结果为:

test

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

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

实例

import java.io.BufferedReader;
import java.io.IOException;
import java.io.Reader;
import java.io.StringReader;
public class Tester {
   public static void main(String[] args) throws IOException {
      System.out.println(readData("test"));
   } 
   static String readData(String message) throws IOException {
      Reader inputString = new StringReader(message);
      BufferedReader br = new BufferedReader(inputString);
      try (br) {
         return br.readLine();
      }
   }
}

执行输出结果为:

test

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

0 篇笔记 写笔记

Java Java 9 改进的 try-with-resources
try-with-resources 是 JDK 7 中一个新的异常处理机制,它能够很容易地关闭try-catch语句块中使用的资源。所谓的资源(resource)是指在程序完成后,必须关闭的对象。try-with-resources语句确保了每个资源在语句结束时关闭。所有实现了 java.la......
C# 异常处理
异常是在程序执行期间出现的问题。C# 中的异常是对程序运行时出现的特殊情况的一种响应,比如尝试除以零。异常提供了一种把程序控制权从某个部分转移到另一个部分的方式。C# 异常处理时建立在四个关键词之上的: try 、 catch finally 和 throw 。try :一个 try 块标识了一个将......
Dockerfile指令ENTRYPOINT
Dockerfile ENTRYPOINT指令功能ENTRYPOINT指令指定默认的入口命令,该入口命令在镜像启动时作为根命令执行,所有传入的参数值都作为该命令的参数。ENTRYRPOINT 的入口程序是容器启动时的执行程序,docker run命令中最后的命令作为参数传给入口程序。例如:docke......
Python3 错误和异常
作为Python初学者,在刚学习Python编程时,经常会看到一些报错信息,在前面我们没有提及,这章节我们会专门介绍。Python有两种错误很容易辨认:语法错误和异常。语法错误Python 的语法错误或者称之为解析错,是初学者经常碰到的,如下实例>>>while True prin......
Centos7 SVN服务的搭建、启动与关闭
CentOS 7 搭建SVN服务安装:1、yum install subversion2、查看安装版本 svnserve — version3、创建SVN版本库目录 mkdir -p /var/svn/svntest4、创建版本库 svnadmin create /var/svn/svntest......
C++ 异常处理
异常是程序在执行期间产生的问题。C++ 异常是指在程序运行时发生的特殊情况,比如尝试除以零的操作。异常提供了一种转移程序控制权的方式。C++ 异常处理涉及到三个关键字: try 、catch、throw。throw: 当问题出现时,程序会抛出一个异常。这是通过使用 throw 关键字来完成的。cat......
Java 异常处理
异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的。比如说,你的代码少了一个分号,那么运行出来结果是提示是错误java.lang.Error;如果你用System.out.println(11/0),那么你是因为你用0做了除数,会抛出java.lang.Arithmeti......
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!