黑马程序员技术交流社区

标题: 一个关于IO流的异常问题????? [打印本页]

作者: awkflf11    时间: 2014-3-24 00:16
标题: 一个关于IO流的异常问题?????
import java.io.FileWriter;
import java.io.IOException;
public class IOExceptionDemo {
        /**
         * @param args  、//  IO异常处理
         */
        public static void main(String[] args) {

                FileWriter fw = null;//以后流对象的引用  全都定义在外边
                try {
                        fw = new FileWriter("demo1.txt");

                        fw.write("abcde");
                        fw.flush();
                } catch (Exception e) {
                        e.printStackTrace();
                } finally
                        if (fw != null)
                                try {
                                        fw.close();
                                } catch (IOException e) {
                                        throw new RuntimeException("关闭失败")                                       
                                }
                }

        }

}

请问在finally里,,为什么要增加一个if (fw != null) 判断??


看了老师的视频,,还是不解,,请高手回答》》??多谢了


作者: 胡永城    时间: 2014-3-24 11:37
如果try {
                        fw = new FileWriter("demo1.txt");

                        fw.write("abcde");
                        fw.flush();
                } 捕获异常了,有可能是 fw = new FileWriter("demo1.txt");打开错误,这时fw=NULL,.......
作者: 向阳泪无痕    时间: 2014-3-28 08:57
你看啊   在执行这句话   fw = new FileWriter("demo1.txt");
的时候 会去找  demo1.txt  文件吧    如果你这个文件跟本不存在  那么就会报  IOException 异常了
这时 fw 流没有建立  是 fw == null 的
而  finally  表示一定要执行的   在 fw == null  的情况下  你去关闭流  fw.close()  又会报异常,因为该流并没有建立成功是吧。所以在关闭流之前要判断 该 fw 流是否是成功创建了的。




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