黑马程序员技术交流社区
标题: 【问题已经解决】关于多个IO流对象需要关闭的问题 [打印本页]
作者: 牛杨 时间: 2012-8-12 01:43
标题: 【问题已经解决】关于多个IO流对象需要关闭的问题
本帖最后由 牛杨 于 2012-8-13 18:37 编辑
昨天复习笔记的时候忽然发现的问题:
就是有多个IO流用完的时候需要关闭,但对毕老师视频中用的关闭方式(关闭代码见下)我感到有些困惑:
如果在执行fr.close();这句时抛出了IOException异常,那岂不是就不会执行到了下面那个fw.close()的关闭动作了么?
也不知道是不是我理解错了,想了好一会儿弄的头大也没想明白。
求各位老少爷们儿能指点小弟一二! 不胜谢谢!
…………
finally
{
if(fr!=null)
try
{
fr.close();
}
catch (IOException e)
{
}
if(fw!=null)
try
{
fw.close();
}
catch (IOException e)
{
}
}
作者: 李敬 时间: 2012-8-12 06:44
这里要先说下异常处理机制的好处:
1,把错误代码与常规代码分开
2,可以在catch中传播错误信息
3,可以对错误类型分组
4,方便定位错误,维护
异常有这样的定义:
阻止当前方法或作用域继续执行的问题。是可预测但是又没办法避免一定不会发生的一种错误.
异常处理后也不能认为程序就正常了,try-catch模块只是告诉你这里有可能会出现不正常的情况,请注意.
简单的说这里写了try-catch后
当发生错误时,程序不至于崩溃,可以在短时间内找到错误所在行.
所以如果fr.close()发生了错误会执行catch块中的语句,提示你这里有错误,让你处理,后面的fw.close()不会执行,其实fr.close()也没操作成功.
作者: 王程 时间: 2012-8-12 07:24
如果fr.close()真的发生异常,的确是不会执行后面的fw.close(),但是程序会中断,会报错,你要处理呀,总要把程序改到不报异常吧,以后运行时不就可以关闭资源了。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |