黑马程序员技术交流社区
标题:
JDK1.7新特性,带参try语句
[打印本页]
作者:
迪卡bas
时间:
2017-5-8 02:12
标题:
JDK1.7新特性,带参try语句
如果你学习过异常处理与IO流,那么应该对try - catch - finally语句不陌生。try代码块用来放可能出现异常的代码,catch代码块用来处理异常,finally代码块用来结束流。代码实现也很简单,用第二十天视屏中介绍的标准复制语句即可。 public static void demo1() throws FileNotFoundException, IOException {
FileInputStream fis = null;
FileOutputStream fos = null;
try {
fis = new FileInputStream("xxx.txt");
fos = new FileOutputStream("yyy.txt");
int b;
while((b = fis.read()) != -1) {
fos.write(b);
}
}finally {
try{
if(fis != null)
fis.close();
}finally { //try fianlly的嵌套目的是能关一个尽量关一个
if(fos != null)
fos.close();
}
}
}
但是这种方式书写的finally语句中仅仅是关流就用了整段代码的三分之一强,未免过于繁琐,好在JDK1.7中添加了一个新特性,叫做带参try语句(try with resource),能够在try - catch语句结束后自动关流,使用也很简单,将流对象的实例化当做参数传入try语句即可,第20天代码也有给出。
public static void demo2() throws FileNotFoundException, IOException {
try(
FileInputStream fis = new FileInputStream("xxx.txt");
FileOutputStream fos = new FileOutputStream("yyy.txt");
MyClose mc = new MyClose();
){
int b;
while((b = fis.read()) != -1) {
fos.write(b);
}
}
}
可以看到流对象并不是在try语句外实例化后再在try后的大括号内赋值,而是在try后的小括号内进行实例化并赋值;在使用完流对象后也没有手动关流,而程序依然能按照预期结果进行。以后使用这种方法就不用再在使用try方法操作io流时头疼如何关流了。
一点浅见,希望能够抛砖引玉
作者:
Hp_Yx
时间:
2017-5-8 07:41
感觉像是在水经验
作者:
hongyu2017
时间:
2017-5-8 09:45
你这代码有点怪异
作者:
aweilovemusic
时间:
2017-5-8 10:11
这种用法在开发中用的少. 只要知道就行了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2