通行证:用 户 密 码 注册 www.pconline.cn 汽车网 游戏网 时尚女性
  太平洋电脑网
首 页 |
论 坛 |
今日报价 | 产业资讯 | 数码世界 | 硬件资讯 | 软件资讯 | 下载中心 | 游 戏 |
产 品 库 | 渠道商情 | 招聘培训 | 二    手 | 评 测 室 | 导购大全 | 社 区 |
摄影
部落
北京 上海 广州 深圳 香港 广西
重庆 山东 江苏 辽宁 福建 成都
手机 数码相机 随身听 DIY配件 笔记本 台式机 摄像机 精品廊
手 机 数码相机 随身听 DIY配件 笔记本 台式机 摄像机 精品廊
   
   
首页 资讯 网络 系统 开发 其它 课程 考题下载 职场 找工作 找人才 服务指南  
 
认证专区: | Cisco | Microsoft | Sun | Oracle | IT设计 | 考题分析 | 软件水平考试 |
 
您现在的位置: 招聘与培训 > 程序开发 > SUN > SUN经验交流 免费新闻代码RSS新闻聚合
 
一篇不错的讲解Java异常的文章
作者:HEYUNYI 责任编辑:lujiezhen



  反例之六:输出数据不完整

  代码:7行-11行。

  不完整的数据是Java程序的隐形杀手。仔细观察这段代码,考虑一下如果循环的中间抛出了异常,会发生什么事情。循环的执行当然是要被打断的,其次,catch块会执行??就这些,再也没有其他动作了。已经输出的数据怎么办?使用这些数据的人或设备将收到一份不完整的(因而也是错误的)数据,却得不到任何有关这份数据是否完整的提示。对于有些系统来说,数据不完整可能比系统停止运行带来更大的损失。

  较为理想的处置办法是向输出设备写一些信息,声明数据的不完整性;另一种可能有效的办法是,先缓冲要输出的数据,准备好全部数据之后再一次性输出。

  结论六:全面考虑可能出现的异常以及这些异常对执行流程的影响。

  改写后的代码

  根据上面的讨论,下面给出改写后的代码。也许有人会说它稍微有点?嗦,但是它有了比较完备的异常处理机制。

OutputStreamWriter out = ...

java.sql.Connection conn = ...

try {

 Statement stat = conn.createStatement();

 ResultSet rs = stat.executeQuery(

  "select uid, name from user");

 while (rs.next())

 {

  out.println("ID:" + rs.getString("uid") + ",姓名: " + rs.getString("name"));

 }

}

catch(SQLException sqlex)

{

 out.println("警告:数据不完整");

 throw new ApplicationException("读取数据时出现SQL错误", sqlex);

}

catch(IOException ioex)

{

 throw new ApplicationException("写入数据时出现IO错误", ioex);

}

finally

{

 if (conn != null) {

  try {

   conn.close();

  }

  catch(SQLException sqlex2)

  {

   System.err(this.getClass().getName() + ".mymethod - 不能关闭数据库连接: " + sqlex2.toString());

  }

 }

 if (out != null) {

  try {

   out.close();

  }

  catch(IOException ioex2)

  {

  System.err(this.getClass().getName() + ".mymethod - 不能关闭输出文件" + ioex2.toString());

  }

 }

}



  本文的结论不是放之四海皆准的教条,有时常识和经验才是最好的老师。如果你对自己的做法没有百分之百的信心,务必加上详细、全面的注释。

  另一方面,不要笑话这些错误,不妨问问你自己是否真地彻底摆脱了这些坏习惯。即使最有经验的程序员偶尔也会误入歧途,原因很简单,因为它们确确实实带来了“方便”。所有这些反例都可以看作Java编程世界的恶魔,它们美丽动人,无孔不入,时刻诱惑着你。也许有人会认为这些都属于鸡皮蒜毛的小事,不足挂齿,但请记住:勿以恶小而为之,勿以善小而不为。



[上一页] [1] [2] [3]
更多相关搜索: Java   

 
本栏今日更新
相关文章
 
·HR之声:360万毕业生,拿什么拯救自己?
·一个毕业生讲述:老板罚我闹市赤膊跑3圈
·跳槽时你知道要抓住身边五类贵人吗
·一个2001届毕业生在深圳求职的经历
·大学毕业生薪金降低 月薪800即可招走
·酸甜苦辣在心头 在德国西门子打工的日子
·我如何从一名中级的DBA转变为高级DBA?
·什么样的人适合考取MCSE和MCDBA认证
·Java加密和数字签名编程快速入门
·对JAVA语言的十个常见误解
·浅析Java语言中两种异常的差别
·Java初级入门教程(连载五)
·Java初级入门教程(连载四)
·Java初级入门教(连载三)
·Java初级入门教程(连载二)
·Java初级入门教程(连载一)

  发给好友 我要报错 投稿给我们 加入收藏 返回顶部  
 
新闻搜索
高级搜索
本栏今日焦点
-
栏目热点推荐
招聘与培训
我在韩国学习生活工作的情况和感受

招聘与培训
一个上班族:我中了500万以后的24小时

招聘与培训
比尔·盖茨宣布将把财产全部捐献社会

招聘与培训
很多上班族都有的毛病,看看你占了几条?

关于太平洋 | 网站地图 | 广告指南 | 联系我们 | 招聘精英 | 合作联系


广东省通信管理局
粤ICP证号:000010
技术支持与报障:support@pconline.com.cn
        020-87568837         
对本站有任何建议、意见或投诉,请点这里在线提交.
本网站简体、繁体两种版本,以简体版为准
PConline版权所有,未经授权禁止转载、摘编、复制或建立镜像.如有违反,追究法律责任__