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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 花园农场 中级黑马   /  2014-6-9 18:33  /  1407 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class FileWriterDemo3 {  
      
    public static void main(String[] args) {  
        /*
         * IO异常的处理规范。  
         * 创建流对象—————— 在try外创建流对象的引用。 在try内对流对象进行初始化。
         */  
        FileWriter fw = null;  
        try {  
            fw = new FileWriter("k:\\demo3.txt");  
  
            fw.write("abcde");  
            fw.flush();  
  
        } catch (IOException e) {  
  
            System.out.println(e.toString());  
        } finally {  
            //在关闭之间必须得判断这个流是否存在,是否被创建。  
            if (fw != null)  
                try {  
                    fw.close();  
                } catch (IOException e) {  
  
                    // 相关的代码处理。比如说,将关闭失败的信息记录到日志文件中。  
                    throw new RuntimeException("关闭失败");  
                }  
        }  
    }  
}  

我的问题是:为什么创建流对象时, 要在try外创建流对象的引用。 在try内对流对象进行初始化?

3 个回复

倒序浏览
本帖最后由 shisishishisi 于 2014-6-9 18:43 编辑

如果你在try内建立流对象的引用的话,你申明的变量fw只在try代码块内有效,在你的finally代码块中写fw,close();时会报错,说你的fw没有定义,但是如果你在try代码块外申明一个FileWriter类型的变量fw的话,则它的作用域是整个FileWriterDemo3 类
回复 使用道具 举报
shisishishisi 发表于 2014-6-9 18:40
如果你在try内建立流对象的引用的话,你申明的变量fw只在try代码块内有效,在你的finally代码块中写fw,clos ...

明白了,非常感谢!
回复 使用道具 举报
因为对象在用的时候需要初始化,放在try里是因为 有可能会发生异常
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马