九、常见错误9:在catch 块中作清除工作
一段在catch块中作清除工作的代码如下所示:
|
尽管这段代码在几个方面都是有问题的,但是在测试中很容易漏掉这个错误。下面列出了这段代码所存在的三个问题:
1、语句os.close()在两处出现,多此一举,而且会带来维护方面的麻烦。
2、上面的代码仅仅处理了Exception,而没有涉及到Error。但是当try块运行出现了Error,流也应该被关闭。
3、close()可能会抛出异常。
上面代码的一个更优版本为:
|
这个版本消除了上面所提到的两个问题:代码不再重复,Error也可以被正确处理了。但是没有好的方法来处理第三个问题,也许最好的方法是把close()语句单独放在一个try/catch块中。
十、常见错误10: 增加不必要的catch块
一些开发者听到try/catch块这个名字后,就会想当然的以为所有的try块必须要有与之匹配的catch块。
C++程序员尤其是会这样想,因为在C++中不存在finally块的概念,而且try块存在的唯一理由只不过是为了与catch块相配对。
增加不必要的catch块的代码就象下面的样子,捕获到的异常又立即被抛出:
|
不必要的catch块被删除后,上面的代码就缩短为:
|
在本文中我为大家分享了十个常见的在Java开发中常见的易发的错误,希望大家有了这方面的哈东东以后多多分享。