Java开发程序员必知的Java编程的10种错误

发表于:2011-2-24 10:06

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:kaduo    来源:51Testing软件测试网采编

  九、常见错误9:在catch 块中作清除工作

  一段在catch块中作清除工作的代码如下所示:

  • OutputStream os = null;  
  • try...{  
  • os = new OutputStream ();  
  • // Do something with os here.  
  • os.close();  
  • }catch (Exception e)...{  
  • if (os != null)  
  • os.close();  
  • }
  •   尽管这段代码在几个方面都是有问题的,但是在测试中很容易漏掉这个错误。下面列出了这段代码所存在的三个问题:

      1、语句os.close()在两处出现,多此一举,而且会带来维护方面的麻烦。

      2、上面的代码仅仅处理了Exception,而没有涉及到Error。但是当try块运行出现了Error,流也应该被关闭。

      3、close()可能会抛出异常。

      上面代码的一个更优版本为:

  • OutputStream os = null;  
  • try...{  
  • os = new OutputStream ();  
  • // Do something with os here.  
  • }finally...{  
  • if (os != null)  
  • os.close();  
  • }
  •   这个版本消除了上面所提到的两个问题:代码不再重复,Error也可以被正确处理了。但是没有好的方法来处理第三个问题,也许最好的方法是把close()语句单独放在一个try/catch块中。

      十、常见错误10: 增加不必要的catch块

      一些开发者听到try/catch块这个名字后,就会想当然的以为所有的try块必须要有与之匹配的catch块。

      C++程序员尤其是会这样想,因为在C++中不存在finally块的概念,而且try块存在的唯一理由只不过是为了与catch块相配对。

      增加不必要的catch块的代码就象下面的样子,捕获到的异常又立即被抛出:

  •  try...{  
  •       // Nifty code here  
  •      }catch(Exception e)...  
  •        {  
  •       throw e;  
  •       }finally...{  
  •        // Cleanup code here  
  •       }
  •   不必要的catch块被删除后,上面的代码就缩短为:

  • try...{  
  • // Nifty code here  
  • }finally...{  
  • // Cleanup code here  
  • }
  •   在本文中我为大家分享了十个常见的在Java开发中常见的易发的错误,希望大家有了这方面的哈东东以后多多分享。

    55/5<12345
    《2023软件测试行业现状调查报告》独家发布~

    关注51Testing

    联系我们

    快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

    法律顾问:上海兰迪律师事务所 项棋律师
    版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
    投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

    沪ICP备05003035号

    沪公网安备 31010102002173号