频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

Java编程十大典型问题详解(2)

来源: 作者:佚名 出处:巧巧读书 2007-12-21 进入讨论组
下一页 1 2 3 4 

  第3条 忘记对资源进行分配和释放

  说明:所谓资源是指CPU,内存,文件等系统资源。系统资源是有限的,并且会被多个过程所调用。因此,在调用资源之前,第一件事情是必须分配资源。

而对已经分配的资源,如果使用之后不加以释放,势必造成资源泄漏,直接导致深度Bug,性能问题,所以必须加以充分的注意。

  经常发生的一件事是,在进行文件操作时,打开的文件必须及时关闭。无论是二进制流还是字符流,一旦在生成流时被打开,直到Close方法被调用之前,流所使用的资源都处于被占用的状态。所以,当资源已经不需要时,一定不要忘记调用Close方法。对于打开的文件,在finally中调用close方法,可以确保在发生异常时被关闭。

  另外,不仅仅是针对文件,应该保持这样的警惕,即对有效资源(可能被共用)不可以长期占用。比如说下页中举的例子,数据库资源(java.sql.Connection,java.sql.Statement等)是典型的必须避免占用的资源。因此而引起的问题是经常发生的。

  例子 ① 可能发生DB资源泄露的典型代码


  Connection con = null;
  PreparedStatement ps = null;
  Try{
  Class.forName(“指定DB驱动”); //Load DB DriverManager
  con = Drivermanager.getConnection(“DB URL”);
  ps = con.prepareStatement(运行用SQL“);
  // 某种处理
  ps.close(); //ERROR: 处理到这里之前如果发生异常,将无法关闭
  con.close(); // ERROR: 处理到这里之前如果发生异常,将无法关闭
  }catch(ClassNotFoundException e1){
  e1.printStackTrace();
  }catch(SQLException e2){
  e2.printStackTrace();
  }

  例子 ② 用finally确实关闭DB资源

  同①背景相同的代码

  //某种处理

catch(ClassNotFoundException e1){ 
  e1.printStackTrace();
  }catch(SQLException e2){
  e2.printStackTrace();
  }finally{
  if( ps != null ){
  try{
  ps.close(); //OK:即使在处理中发生异常也可以保证关闭。
  }catch(SQLException e3){
  e3.printStackTrace();
  }
  if( con != null){
  try{
  con.close(); //OK:即使在处理中发生异常也可以保证关闭。
  }catch(SQLException e4){
  e4.printStackTrace();
  }
  }
  }

  补充说明:通过垃圾回收机制释放对象

  Java语言中有垃圾回收机制,在Java的Heap上分配的对象,一般来说是不需要显式

  地释放的。但是,被释放的资源仅是垃圾回收处理中被判断为“程序已经不使用”的部分。

  详细内容可以参考该文章的补充5.

  第4条 在分支处理时遗漏条件

  说明:在if或者switch等控制命令中,把应该考虑到的条件遗漏掉,是比较典型的Bug.特别是,某些类型的条件遗漏,在以正常系为核心的测试中往往很难发现,却非常可能在产品交付后发现是致命的Bug,所以需要特别加以留意。

  为了不遗漏条件,必须注意以下2点:

  1. 编写正确的条件式

  为了“写出正确的条件式”,需要通过条件式的变换来验证写出的条件式是否表达了我们本来的意图(参考补充说明)。

  在此基础上,如果构成条件的表达式非常复杂,就需要使用真值表对条件式构成及关系进行整理(参考补充说明表)。

本文:http://www.qqread.com/java/2007/12/w388008.html 更多文章 更多内容请看Java环境安装配置Java编程开发手册Java的类专题,或进入讨论组讨论。
下一页 1 2 3 4 
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章