A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© awkflf11 中级黑马   /  2014-3-24 00:16  /  1700 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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) 判断??


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

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

2 个回复

倒序浏览
如果try {
                        fw = new FileWriter("demo1.txt");

                        fw.write("abcde");
                        fw.flush();
                } 捕获异常了,有可能是 fw = new FileWriter("demo1.txt");打开错误,这时fw=NULL,.......

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

回复 使用道具 举报
你看啊   在执行这句话   fw = new FileWriter("demo1.txt");
的时候 会去找  demo1.txt  文件吧    如果你这个文件跟本不存在  那么就会报  IOException 异常了
这时 fw 流没有建立  是 fw == null 的
而  finally  表示一定要执行的   在 fw == null  的情况下  你去关闭流  fw.close()  又会报异常,因为该流并没有建立成功是吧。所以在关闭流之前要判断 该 fw 流是否是成功创建了的。

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马