黑马程序员技术交流社区

标题: IO异常的处理问题 [打印本页]

作者: 花园农场    时间: 2014-6-9 18:33
标题: IO异常的处理问题
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内对流对象进行初始化?
作者: shisishishisi    时间: 2014-6-9 18:40
本帖最后由 shisishishisi 于 2014-6-9 18:43 编辑

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

明白了,非常感谢!
作者: youngkay    时间: 2014-6-10 18:17
因为对象在用的时候需要初始化,放在try里是因为 有可能会发生异常




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