黑马程序员技术交流社区

标题: 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