黑马程序员技术交流社区

标题: 流的标准处理异常代码两种方式的区别是什么新人求解 [打印本页]

作者: 天晴了吗    时间: 2015-11-23 23:44
标题: 流的标准处理异常代码两种方式的区别是什么新人求解
        第一种:
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();
                        }
                }
        }

}
第二种:
public class Demo7_TryFinally2 {
        public static void main(String[] args) {
                FileInputStream fis = null;
                FileOutputStream fos = null;
                try {
                        fis = new FileInputStream("aaa.txt");
                        fos = new FileOutputStream("bbb.txt");
                        int b;
                        while ((b = fis.read()) != -1) {
                                fos.write(b);
                        }
                } catch (FileNotFoundException e) {
                        e.printStackTrace();
                } catch (IOException e) {
                        e.printStackTrace();
                } finally {
                        if (fis != null) {
                                try {
                                        fis.close();
                                } catch (IOException e) {
                                        e.printStackTrace();
                                }
                        }
                        if (fos != null) {
                                try {
                                        fos.close();
                                } catch (IOException e) {
                                        e.printStackTrace();
                                }
                        }
                }

        }
}
作者: 天晴了吗    时间: 2015-11-24 23:17
没人加大么
作者: 半瓶神仙油    时间: 2015-11-24 23:19
这个问题我也不知道啊
作者: Weidan    时间: 2015-11-28 22:38
异常解决有两张:
第一种是抛出去,也就是你上面的第一种,那么调用你这个方法的人,就需要处理这个异常,他可以继续选择抛出去或者捕获处理。
第二种就是捕获处理了,捕获到异常以后,try里面的代码就不执行,你可以另选一个方案达到你的目的。默认是把错误打印在控制台。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2