- 浏览: 1092733 次
文章分类
- 全部博客 (379)
- S2SH (16)
- stuts2 (0)
- java语言 (81)
- JSP (17)
- <html>元素 (11)
- javaweb (4)
- web容器 (3)
- ext (23)
- javaScript (48)
- ant (1)
- liferay (1)
- sql (9)
- css (42)
- 浏览器设置 (3)
- office_world (1)
- eclipse (4)
- 其它 (28)
- 操作系统 (5)
- android (6)
- Struts2 (11)
- RegEx (3)
- mysql (5)
- BigDATA (1)
- Node.js (1)
- Algorithm (10)
- Apache Spark (1)
- 数据库 (5)
- linux (2)
- git (1)
- Adobe (3)
- java语言,WebSocket (1)
- Maven (3)
- SHELL (1)
- XML (2)
- 数学 (2)
- Python (2)
- Java_mysql (1)
- ReactJS (6)
- 养生 (4)
- Docker (1)
- Protocols (3)
- java8 (2)
- 书籍 (1)
- Gradle (2)
- AngularJS (5)
- SpringMVC (2)
- SOAP (1)
- BootstrapCSS (1)
- HTTP协议 (1)
- OAuth2 (1)
最新评论
-
Lixh1986:
Java并发编程:自己动手写一把可重入锁https://blo ...
Java之多线程之Lock与Condition -
Lixh1986:
http://win.51apps.com.cn/https: ...
temp -
ztwsl:
不错,支持很好
HttpServletRequest和ServletRequest的区别 -
guodongkai:
谢谢您能将知识精华汇编总结,让初学者们从原理中学会和提高。
javaScript之function定义 -
kangwen23:
谢谢了,顶顶
struts2中的ValueStack学习
Java之Java7新特性之try资源句式
一、【try资源句式】是干嘛用的?
在JDK 7版本中出现了一种新的句式: try(资源)
try资源 (try with resources) 句式是一个 try 句式,可以 try 一个或多个资源。
资源必须在用完后 close 掉。使用try资源句式可以自动 close 资源。
任何实现了 java.lang.AutoCloseable 接口的类,
都可以使用 try资源句式,自动 close。
一句话:
使用 try资源句式 用来自动 close 资源。而不用担心资源一直占用内存无法释放。
二、使用语法 - 何时自动关闭资源
下面的例子用于读取文件的第一行。它使用一个 BufferedReader 的实例来读取数据。
BufferedReader 在这里就是一个资源,它必须在程序运行结束后被关闭。
BufferedReader 在 jdk1.7 中实现了 java.lang.AutoCloseable 接口,
它将被自动关闭,无论是程序正常结束还是中途抛出异常。
三、异常是如何被抛出/捕获的?
try资源句式 其功能是用于资源的自动关闭,而对于异常的 catch 和 finally,
在写法上跟 jkd 1.7 之前没有区别。
在 jdk 1.7 之前,如果遇到异常,会写在 catch 中,然后在 finally 块中关闭资源。
上例中如果 readLine() 和 close() 都抛出异常时,该方法抛出的异常是 finally 块中的异常,
try块中的异常被忽略了。
与之相反的是,try资源句式 则会抛出try块中的异常,try句式中的异常被忽略掉了。
当然你仍然可以在 catch() 块中获取到被忽略的异常。
四、可以 try 多个资源
使用 try资源句式 时,可以将多个资源写在一起,中间用分号隔开。
注意:
1、最后一个资源后面没有分号。
2、资源的关闭顺序跟写的顺序相反(最先打开的最后关闭)。
五、获取被 try资源句式 忽略的异常
前述已讲过,try{} 体中的异常会覆盖掉 try() 表达式中的异常。
但仍然可以通过 try{} 体中抛出的异常 和 Throwable.getSuppressed() 方法获取那些被忽略的异常。
-
转载请注明,
原文出处:http://lixh1986.iteye.com/blog/2370408
引用:
The try-with-resources Statement
https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html
-
一、【try资源句式】是干嘛用的?
在JDK 7版本中出现了一种新的句式: try(资源)
try资源 (try with resources) 句式是一个 try 句式,可以 try 一个或多个资源。
资源必须在用完后 close 掉。使用try资源句式可以自动 close 资源。
任何实现了 java.lang.AutoCloseable 接口的类,
都可以使用 try资源句式,自动 close。
public interface java.io.Closeable extends java.lang.AutoCloseable
一句话:
使用 try资源句式 用来自动 close 资源。而不用担心资源一直占用内存无法释放。
二、使用语法 - 何时自动关闭资源
下面的例子用于读取文件的第一行。它使用一个 BufferedReader 的实例来读取数据。
BufferedReader 在这里就是一个资源,它必须在程序运行结束后被关闭。
static String readFirstLineFromFile(String path) throws IOException { try( BufferedReader br = new BufferedReader(new FileReader(path)) ){ return br.readLine(); } }
BufferedReader 在 jdk1.7 中实现了 java.lang.AutoCloseable 接口,
它将被自动关闭,无论是程序正常结束还是中途抛出异常。
三、异常是如何被抛出/捕获的?
try资源句式 其功能是用于资源的自动关闭,而对于异常的 catch 和 finally,
在写法上跟 jkd 1.7 之前没有区别。
在 jdk 1.7 之前,如果遇到异常,会写在 catch 中,然后在 finally 块中关闭资源。
static String readFirstLineFromFileWithFinallyBlock(String path) throws IOException { BufferedReader br = new BufferedReader(new FileReader(path)); try { return br.readLine(); } finally { if (br != null) br.close(); } }
上例中如果 readLine() 和 close() 都抛出异常时,该方法抛出的异常是 finally 块中的异常,
try块中的异常被忽略了。
与之相反的是,try资源句式 则会抛出try块中的异常,try句式中的异常被忽略掉了。
当然你仍然可以在 catch() 块中获取到被忽略的异常。
public static void viewTable(Connection con) throws SQLException { String query = "select COF_NAME, SUP_ID, PRICE, SALES, TOTAL from COFFEES"; try (Statement stmt = con.createStatement()) { ResultSet rs = stmt.executeQuery(query); while (rs.next()) { String coffeeName = rs.getString("COF_NAME"); int supplierID = rs.getInt("SUP_ID"); float price = rs.getFloat("PRICE"); int sales = rs.getInt("SALES"); int total = rs.getInt("TOTAL"); System.out.println(coffeeName + ", " + supplierID + ", " + price + ", " + sales + ", " + total); } } catch (SQLException e) { JDBCTutorialUtilities.printSQLException(e); } }
四、可以 try 多个资源
使用 try资源句式 时,可以将多个资源写在一起,中间用分号隔开。
注意:
1、最后一个资源后面没有分号。
2、资源的关闭顺序跟写的顺序相反(最先打开的最后关闭)。
public static void writeToFileZipFileContents(String zipFileName, String outputFileName) throws java.io.IOException { java.nio.charset.Charset charset = java.nio.charset.StandardCharsets.US_ASCII; java.nio.file.Path outputFilePath = java.nio.file.Paths.get(outputFileName); // Open zip file and create output file with // try-with-resources statement try ( java.util.zip.ZipFile zf = new java.util.zip.ZipFile(zipFileName); java.io.BufferedWriter writer = java.nio.file.Files.newBufferedWriter(outputFilePath, charset) ) { // Enumerate each entry for (java.util.Enumeration entries = zf.entries(); entries.hasMoreElements();) { // Get the entry name and write it to the output file String newLine = System.getProperty("line.separator"); String zipEntryName = ((java.util.zip.ZipEntry)entries.nextElement()).getName() + newLine; writer.write(zipEntryName, 0, zipEntryName.length()); } } }
五、获取被 try资源句式 忽略的异常
前述已讲过,try{} 体中的异常会覆盖掉 try() 表达式中的异常。
但仍然可以通过 try{} 体中抛出的异常 和 Throwable.getSuppressed() 方法获取那些被忽略的异常。
-
转载请注明,
原文出处:http://lixh1986.iteye.com/blog/2370408
引用:
The try-with-resources Statement
https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html
-
发表评论
-
java 将文件夹所有的文件合并到指定的文件夹下
2020-06-30 19:17 984场景:将文件夹所有的文件合并到指定的文件夹下 另外:如果想效 ... -
多线程-线程池的四种创建方式
2020-04-01 18:38 417多线程-线程池的四种创建方式 https://blog.cs ... -
Java基础之:nio
2019-11-13 15:38 416一、理论讲解: 史上最强Java NIO入门:担心从入门到放弃 ... -
Java 分布式之:RPC 基本概念
2019-11-13 15:07 404转载: https://www.jianshu.com/p/ ... -
Java之 volatile 关键字原理详解
2019-11-07 15:36 448一、什么是 volatile ? ... -
POI实现excell批注背景图片(仿html浮窗显示图片)
2019-10-21 08:17 606POI实现excell批注背景图片(仿html浮窗显示图片) ... -
Java之设计模式之 Observer 观察者
2019-07-04 17:21 977观察者设计模式 Java 已经实现了该模式,并且提供了使用类 ... -
HashMap, LinkedHashMap and TreeMap
2019-03-01 11:04 629https://stackoverflow.com/a/177 ... -
Java lib 操作 excel 插入图片
2019-01-19 12:46 842https://poi.apache.org/componen ... -
数据库连接池C3P0
2018-05-29 16:50 816一、名字的由来 很多 ... -
Java8之集合(Collection)遍历 forEach()、stream()
2018-05-29 14:39 20666package java8.collections; ... -
Junit Vs main on "java.util.concurrent.Executors"
2017-11-10 16:44 737Same code with different result ... -
Java之大数据学习路线
2017-11-03 10:08 5676三个月大数据研发学习 ... -
Java中创建对象的5种方式
2017-10-26 14:21 812一、Java之5种创建对象的方式 ————————————— ... -
Log4j和Slf4j的比较
2017-06-23 12:41 1368一直搞不清 Log4j 和 SLF4j 的关系。今天才若有所 ... -
Java之 java.util.concurrent 包之ExecutorService之submit () 之 Future
2017-03-04 21:27 3778一、如何使用 ExecutorService.submit() ... -
Java之 java.util.concurrent 包之Executor与ExecutorService
2017-03-04 21:18 2651一、问题: execute() 与 submit() 的区别? ... -
JAVAEE之单用户登录
2017-02-05 11:55 1034单用户登录是系统中数据一直性的解决方案之一。 问题背景: 试 ... -
Java之多线程之线程池之线程重复使用
2017-02-04 13:33 5526一、问题背景 在使用多线程时,如果要开启一个任务,则就需要新 ... -
Java之语法之方法调用之地址传值之空对象(null)
2017-01-26 14:05 3242一、问题: public void test ...
相关推荐
18.java自动关闭资源的try语句.zip18.java自动关闭资源的try语句.zip18.java自动关闭资源的try语句.zip18.java自动关闭资源的try语句.zip18.java自动关闭资源的try语句.zip18.java自动关闭资源的try语句.zip18.java...
java try…catch嵌套捕获异常的实例 java try…catch嵌套捕获异常的实例
java中try catch的用法 java try catch的用法 java中 try catch的用法
14.新特性7:异常处理try结构的使用升级 15.新特性8:下划线命名标识符的限制 16.新特性9:String底层存储结构的变化 17.新特性10:创建只读集合 18.新特性11:增强的Stream API 19.新特性11:Optional提供的stream...
java try…catch捕获异常的实例 java try…catch捕获异常的实例
Java Platform Standard Edition 7 Documentation What's New Documentation Release Notes Tutorials and Training The Java Tutorials Java Training More Information Java SE 7 Names and ...
本书深入介绍了Java编程的相关方面,全书内容覆盖了Java的基本语法结构、Java的...本书全面介绍了Java7的二进制数、棱形语法、增强switch语句、多异常捕获、自动关闭资源的try语句、JDBC4.1新特性、NIO.2、AIO等新特性
19.java嵌套的try…catch语句.zip19.java嵌套的try…catch语句.zip19.java嵌套的try…catch语句.zip19.java嵌套的try…catch语句.zip19.java嵌套的try…catch语句.zip19.java嵌套的try…catch语句.zip19.java嵌套的...
17.javatry…catch…finally语句.zip17.javatry…catch…finally语句.zip17.javatry…catch…finally语句.zip17.javatry…catch…finally语句.zip17.javatry…catch…finally语句.zip17.javatry…catch…finally语句...
本书深入介绍了Java编程的相关方面,全书内容覆盖了Java的基本语法结构、Java...本书全面介绍了Java7的二进制数、棱形语法、增强switch语句、多异常捕获、自动关闭资源的try语句、JDBC4.1新特性、NIO.2、AIO等新特性。
jdk7最新特性trywresources
# jdk7新特性 ## try-with-resources 是一种声明了`一种或多种资源的try语句`。资源是指在程序用完了之后必须要关闭的对象。try-with-resources语句保证了每个声明了的`资源在语句结束的时候都会被关闭`。任何实现...
《Java JDK 7学习笔记》针对Java SE 7新功能全面改版,无论是章节架构或范例程序代码,都做了全面重新编写与翻新。 《Java JDK 7学习笔记》是作者多年来教学实践的经验总结,汇集了学员在教学过程中遇到的概念、...
深圳电信培训中心徐海蛟博士 Java/JavaEE 教学用的参考资料。...本书全面介绍了Java 7的二进制整数、菱形语法、增强switch语句、多异常捕获、自动关闭资源的try语句、JDBC4.1新特性、NIO.2、AIO等新特性。
《疯狂Java讲义(附光盘第2版)》全面介绍了Java 7的二进制整数、菱形语法、增强switch语句、多异常捕获、自动关闭资源的try语句、JDBC 4.1新特性、NIO.2、AIO等新特性。 与第1版类似,《疯狂Java讲义(附光盘第2版)》...
本书深入介绍了Java编程的相关方面,全书内容覆盖了Java的基本语法结构、Java...本书全面介绍了Java7的二进制数、棱形语法、增强switch语句、多异常捕获、自动关闭资源的try语句、JDBC4.1新特性、NIO.2、AIO等新特性。
12 4JavaApplet中建立新线程 12 5JavaApplet中使用套接字 习题 第13章常见数据结构的Java实现 13 1链表 13 2栈 13 3树集 13 4树映射 13 5散列集 13 6散列表 13 7向量 习题 第14章图形与图像 14 1绘制文本 14 2绘制...
以下是一些建议的Java面试准备要点和资源描述: 一、Java基础知识 数据类型、变量与运算符:理解Java中的基本数据类型、变量声明与初始化,以及常用的运算符和表达式。 控制流语句:熟悉if-else、switch、for、...
下面小编就为大家带来一篇浅谈java7增强的try语句关闭资源。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
压缩包里有本人录制的一个小视屏,不会的亲们,可以看下哦~~~ 笨人要期末考了呢,录些小视屏供自己复习所用,也是为了资源共享~O(∩_∩)O~