读书人

对于构造方法有可能产生错误的情况上垃

发布时间: 2012-12-22 12:05:06 作者: rapoo

对于构造方法有可能产生异常的情况下垃圾清理问题的研究

?这个类很简单,也很容易理解。如果在InputFile的构造方法里抛出了FileNotFoundException,则说明文件没有被成功打开,因而,in这个BufferedReader的对象实例没有成功创建,此时如果在finally里面这样写 in.close(),这就是不合理的。所以在构造方法抛出FileNotFoundException时,我们并不需要调用in.close()对象,因为它没有关联到一个具体的文件上;不过当抛出其他Excpetion时,我们就需要关闭文件了,因为这时指定的文件已成功打开。另外需要说明的是dispose方法,这个方法是你在使用完InputFile对象之后需要调用的,它用来释放系统资源(例如文件句柄)。可能你会想到把这个功能放到finalize方法里面,然而我们知道我们无法确定finalize方法是否总是会被调用,即便会被调用我们也无法确定会在什么时候调用。从这里就牵扯出java语言的一个缺陷,在java里面只有内存的清理是自动执行的,除此之外其他的一切都不会自动清除,所以我们要通知客户端程序员dispose方法是有一定的职责的。

?按照这种写法,可以看出:对于那些构造方法不会产生异常的类,我们总能对它进行清理;对于构造方法有可能产生异常的类,我们总能在必要时对它进行清理。

读书人网 >编程

热点推荐