Java | 原来 try 还可以这样用啊?!
本文首发于 http://youngzy.com/
习惯了这样的try:
try
{ } catch (Exception e)
{
}
看到了这样的try,觉得有点神奇:
try(...)
{
} catch (Exception e)
{
}
原来这还有个专业术语, try-with-resources statement ,它会自动关闭括号内的资源(resources),不用手动添加代码 xx.close(); 了。
看个小例子:
package org.young.elearn; import java.io.FileOutputStream;
import java.io.IOException; import org.junit.Test; /**
* try-with-resources 的使用
* try(resouces)
* {
*
* } catch (Exception e){}
*
* 这里的resource会自动关闭
*
* 1. resource 必须继承自 java.lang.AutoCloseable
* 2. 定义和赋值必须都在try里完成
*
*
*
* @author by Young.ZHU
* on 2016年5月29日
*
* Package&FileName: org.young.elearn.TryWithResourcesTest
*/
public class TryWithResourcesTest { /**
* 验证一下资源是不是真的关闭了
*/
@Test
public void test() { try (MyResources mr = new MyResources()) {
// mr.doSomething(4);
mr.doSomething(9);
} catch (Exception e) {
System.out.println(e.getMessage());
}
} /**
* 编译错误:
* The resource f of a try-with-resources statement cannot be assigned
*/
@Test
public void test2() {
try (FileOutputStream f = null;) {
// f = new FileOutputStream(new File(""));
} catch (IOException e) {
e.printStackTrace();
}
} /**
* 编译错误:
* The resource type File does not implement java.lang.AutoCloseable
*/
@Test
public void test1() {
/*try (File file = new File("d:\\xx.txt");) { } */
} } class MyResources implements AutoCloseable { @Override
public void close() throws Exception {
System.out.println("resources are closed.");
} public void doSomething(int num) throws Exception {
if (num % 2 == 0) {
System.out.println("it's OK.");
} else {
throw new Exception("Enter an even.");
}
}
}
以后使用 InputStream,OutputStream 之类的就方便一点了,具体可参考另一个例子:GitHub
Java | 原来 try 还可以这样用啊?!的更多相关文章
- Spark案例分析
一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...
- 学了java,我才发现台球还可以这样玩!
桌球小游戏的尝试 桌球是人们日常生活中都能接触到的一种娱乐活动,随着互联网技术的发展,手机上也有了很多桌球小游戏,让人们随时随地都能打两把. 今天分享一个用java编写的桌球小游戏 代码如下: ...
- 【干货】用大白话聊聊JavaSE — ArrayList 深入剖析和Java基础知识详解(二)
在上一节中,我们简单阐述了Java的一些基础知识,比如多态,接口的实现等. 然后,演示了ArrayList的几个基本方法. ArrayList是一个集合框架,它的底层其实就是一个数组,这一点,官方文档 ...
- 使用 Google Guava 美化你的 Java 代码
文章转载自:http://my.oschina.net/leejun2005/blog/172328 目录:[ - ] 1-使用 GOOGLE COLLECTIONS,GUAVA,STATIC IMP ...
- java内部类以及匿名类
内部类 一个类内部定义的类称为内部类. 内部类允许把逻辑相关的类组织在一起,并控制内部代码的可视性. 内部类与外部类的结构层次如下. 顶层类:最外层的类 外部类:内部类所在的类 内部类:类内部定义的类 ...
- Java与数据库之间时间的处理
Java与数据库之间时间的处理 在数据库中建表: DROP TABLE IF EXISTS `times`; CREATE TABLE `times` ( `id` int(11) NOT NULL ...
- Java 异常处理机制和集合框架
一.实验目的 掌握面向对象程序设计技术 二.实验环境 1.微型计算机一台 2.WINDOWS操作系统,Java SDK,Eclipse开发环境 三.实验内容 1.Java异常处理机制涉及5个关键字:t ...
- java 语法糖
package syntax.autoCase; import java.util.Arrays; import java.util.List; public class autoCase { pub ...
- Java Logger(java日志)
目录 1. 简介2. 安装3. log4j基本概念3.1. Logger3.2. Appender3.2.1. 使用ConsoleAppender3.2.2. 使用FileAppender3.2.3. ...
随机推荐
- C# 命名空间和程序集
一.命名空间 1.通过使用using关键字引入命名空间,减少代码量 命名空间对相关的类型进行逻辑分组,通过命名空间能快速的定位到相关的类型,例如:在System.IO命名空间下,定义了所有I/O操作的 ...
- linux下配置Tomcat开机启动
我们在linux下安装好tomcat之后:经常是需要配置到开机启动的: 这样的话就不需要我们每次重启linux服务器之后自己在登陆运行startup.sh文件启动tomcat了 本次的演示环境是在ce ...
- ntopng 推送solr
1.修改代码在且不说 2.修改完之后先卸载原先的ntopng 使用 whereis ntopng 找到安装目录,然后删除 /usr/local/bin/ntopng /usr/local/share/ ...
- 微服务架构介绍和RPC框架对比
微服务架构介绍和RPC框架对比 1.微服务架构 1.1 特征 自动化部署,端点智能化,语言和数据的去中心化控制. 1.2架构 一种将一个单一应用程序开发为一组小型服务的方法,每个服务运行在自己的进程中 ...
- ubuntu环境下python虚拟环境的安装
一. 虚拟环境搭建 在开发中安装模块的方法: pip install 模块名称 之前我们安装模块都是直接在物理环境下安装,这种安装方法,后面一次安装的会覆盖掉前面一次安装的.那如果一台机器上面开发多个 ...
- StringMVC @RequestMapping method属性
@RequestMapping(value="/testMethod",method=RequestMethod.POST) public String testMethod(){ ...
- class java.awt.HeadlessException : No X11 DISPLAY variable was set, but this program performed an operation which requires it.
今天上午打印回单功能发布到测试环境,报了: class java.awt.HeadlessException : No X11 DISPLAY variable was set, but this p ...
- css3弹性盒模型flex快速入门与上手(align-content与align-items)
接着上文css3弹性盒模型flex快速入门与上手1继续,上文还剩下两个父容器的属性align-items和align-content. 一.align-content:多行的副轴对齐方式 含义 多行的 ...
- 第四章 go语言 数组、切片和映射
文章由作者马志国在博客园的原创,若转载请于明显处标记出处:http://www.cnblogs.com/mazg/ 数组是由同构的元素组成.结构体是由异构的元素组成.数据和结构体都是有固定内存大小的数 ...
- Android异常分析(转)
关于异常 异常? 异常就是一种程序中没有预料到的问题,既然是没有预料到的,就可能不在原有逻辑处理范围内,脱离了代码控制,软件可能会出现各种奇怪的现象.比如:android系统常见异常现象有应用无响应. ...