首页产品库评测行情新闻|手机数码笔记本台式机DIY硬件数字家庭数码相机办公外设|软件下载游戏开发|社区

更多

数码相机
MP4
LCD
机箱
音箱

软件资讯设计 工具 系统 开发 安全 办公 陶吧 IT教育 Vista频道 | 下载中心酷我音乐盒 腾讯QQ
天极网 > 开发频道>Java编程中异常处理的优劣之道

Java编程中异常处理的优劣之道

2007-08-09 09:02作者:收集整理出处:天极Yesky软件频道责任编辑:方舟



  不好的Java异常处理

  不好的一面包括两种情况:滥用不可检查异常(unchecked exceptions)和滥用catchall构造器等。这两种方式都使得问题变得复杂起来。

  有一种类别的异常属于RuntimeException的子类,这种异常不会受到编译器的检查。比如,NullPointerException和 ArrayStoreException就是这种类型异常的实例。程序员可以对RuntimeException进行子类化以回避检查异常的限制,从而便于产生这些异常的方法为其调用者所使用。

  专业的开发团队应当只允许在很少的情况下才可以这样做。

  第二种异常处理的陋习是catchall构造器。所谓的“catchall 构造器”就是一种异常捕获代码模块,它可以处理所有扔给它的可能异常。

  以下是catchall处理器的实例:

1
2
3
4
5
6
7
8
9
 try 
 {  
    // code here with checked exceptions 
 } 
 catch (Throwable t)  
 {  
     t.printStackTrace();  
 } 
      

  我得承认,我自己在编写一般程序的时候就曾经用过这种技术;但是,在编写关键程序的时候这种类型的构造器一定要避免使用,除非他们被授权可以和中央错误处理器联合使用才可以这样做。 

  除此之外,catchall构造器不过只是一种通过避免错误处理而加快编程进度的机制。

  异常处理的一个不足之处是难以采用优良的错误处理策略。从低容内存状态恢复、写入错误和算法错误等异常情况都不是轻易能得到解决的。你可以尝试一下循环、垃圾收集和提醒用户等常用技术来应付以上的局面。

  恶劣的处理方法

  和许多Java特性及其API类似,Java的异常处理机制也有“霸王硬上弓”类的滑稽错误。比方说,为了扔出某个异常竟然毫不犹豫地用“new”关键词为其分配内存就是这样的例子。

  我自己不知道有多少次就因为犯了这种错误而在严肃的编译器面前屡屡碰壁。在这种情况下,我们其实都是在伺候语言而不是让语言为我们所用。还有我们碰到的OutOfMemoryErrors就是异常处理的缺陷。这一处理过程是:

  使用finally模块关闭文件,解析异常以得到出现问题的方法和代码行。在这一过程之内最大的缺陷是需要捕获OutOfMemoryError,而这一异常却并不是可检查异常!想想看,内存耗尽是相当常见的情况。任何与内存使用状态紧密相关的程序都应当捕获和处理这一错误。

  使用异常时的一些建议

  1.异常控制的设计宗旨并不是用来代替一些简单的测试。只有在异常情况下才使用异常!

  2.不要过分细化异常。不要在每个语句上都加上异常处理,最好将整个任务都放在try块内。如果其中有一项操作失败,可以随即放弃任务。

  3.不要“压制”异常。对于需要通告异常的方法,我们可以改用捕捉的方法来将异常强行关闭,如果真的出现异常,那个异常会被“静悄悄”的忽略。如果觉得产生的异常会非常重要,就必须多费些功夫,对其进行正确的控制。

  4.不要介意异常的传递。如果调用的方法会产生异常,比如readLine方法,他们天生就能捕捉自己可能产生的异常,在这种情况下,一种更好地做法是将这些异常传递出去,而不是自己动手来捕捉它。

  查阅关于 Java 异常 的全部文章
共2页。 上一页12
进入 最权威的Windows 7论坛 查看网友讨论

软件频道最新更新

热点推荐

IT嘉年华

编辑推荐

软件下载

热门
推荐

网友关注

软件
资料
游戏

装机推荐

文章排行

本周
本月
最新更新
天极服务|关于我们|About us|网站律师|RSS订阅|友情合作|加入我们|天极动态|网站地图|意见反馈|MSN/QQ上看天极
Copyright (C) 1999-2012 Yesky.com, All Rights Reserved 版权所有 天极网络