当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:12:00  来源:本站整理

全面掌握Java的非常处理机制[Java编程]

赞助商链接



  本文“全面掌握Java的非常处理机制[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

你认为自己是一个Java专家吗?能否必定自己已经全面掌握了Java的非常处理机制?在下面这段代码中,你可以疾速找出非常处理的六个问题吗?

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"));
     }
     conn.close(); // ⑶
    out.close();
   }
   catch(Exception ex) // ⑵
   {
    ex.printStackTrace(); //⑴,⑷
   }

作为一个Java程序员,你至少应当可以找出两个问题.但是,假如你不能找出全部六个问题,请持续阅读本文.

本文谈论的不是Java非常处理的普通性原则,因为这些原则已经被大大都人熟知.我们要做的是解析各种可称为“反例”(anti-pattern)的违反优异编码标准的常见坏习惯,帮忙读者熟习这些典型的背面例子,从而可以在实际工作中灵敏地发觉和避免这些问题.

反例之一:丢弃非常

代码:15行-18行.

这段代码捕捉了非常却不作任何处理,可以算得上Java编程中的杀手.从问题呈现的频繁程度和祸殃程度来看,它也答应以和C/C++程序的一个恶名远播的问题相提并论??不查抄缓冲区能否已满.假如你看到了这种丢弃(而不是抛出)非常的情形,可以百分之九十九地必定代码存在问题(在极少数情形下,这段代码有存在的来由,但最好加上完好的注释,免得惹起别人曲解).

这段代码的错误在于,非常(几近)老是意味着某些事情不对劲了,大概说至少发生了某些不平常的事情,我们不该该对程序发出的求救信号保持沉默和无动于衷.调用一下printStackTrace算不上“处理非常”.不错,调用printStackTrace对换试程序有帮忙,但程序调试阶段完毕之后,printStackTrace就不该再在非常处理模块中担负主要责任了.

丢弃非常的情形非常广泛.翻开JDK的ThreadDeath类的文档,可以看到下面这段阐明:“分外地,固然呈现ThreadDeath是一种‘正常的情形’,但ThreadDeath类是Error而不是Exception的子类,因为很多利用会捕捉全部的Exception然后丢弃它不再答理.”这段话的意思是,固然ThreadDeath代表的是一种普通的问题,但鉴于很多利用会试图捕捉全部非常然后不予以得当的处理,所以JDK把ThreadDeath定义成了Error的子类,因为Error类代表的是普通的利用不该该去捕捉的严重问题.可见,丢弃非常这一坏习惯是如此常见,它乃至已经影响到了Java本身的计划.

那么,应当怎样改正呢?主要有四个挑选:

1、处理非常.针对该非常采纳一些行动,比方改正问题、提醒某个人或举行其他一些处理,要按照具体的情形肯定应当采纳的行动.再次阐明,调用printStackTrace算不上已经“处理好了非常”.

2、重新抛出非常.处理非常的代码在解析非常之后,认为自己不能处理它,重新抛出非常也不失为一种挑选.

3、把该非常转换成另一种非常.大大都情形下,这是指把一个初级的非常转换成利用级的非常(其含义更简单被用户理解的非常).

4、不要捕捉非常.


  以上是“全面掌握Java的非常处理机制[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • 全面掌握Java的非常处理机制
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .