黑马程序员技术交流社区
标题:
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