异常处理 曾经专门花时间研究过JAVA中“异常处理”。一直想写一篇文章。也一直没有找到合适的方式。概念书上都有,在这里我再重提又觉得对不起大家。最后就不了了之。 无意间,看到CSDN上有一篇文章写得不错。转给大家看看吧。作者给出了很标准的做法,这里我加点建议。 仅供参考 注:所有建议都不会去怀疑和针对,作者想要讲解的异常处理知识点 ¢ Source code的每一个角落都这样100%标准的去处理异常。会一定程度的影响代码质量。不要相同的处理逻辑反复出现(比如用Template模式简化处理过程) ¢ 根据自己的实际情况选择异常使用,能不用异常处理的时候尽量不要用。有时候没有必要“强求”100% 转贴内容 你觉得自己是一个Java专家吗?是否肯定自己已经全面掌握了Java的异常处理机制?在下面这段代码中,你能够迅速找出异常处理的六个问题吗?
反例之四:不说明异常的详细信息 代码:3行-18行。 仔细观察这段代码:如果循环内部出现了异常,会发生什么事情?我们可以得到足够的信息判断循环内部出错的原因吗?不能。我们只能知道当前正在处理的类发生了某种错误,但却不能获得任何信息判断导致当前错误的原因。 printStackTrace的堆栈跟踪功能显示出程序运行到当前类的执行流程,但只提供了一些最基本的信息,未能说明实际导致错误的原因,同时也不易解读。 因此,在出现异常时,最好能够提供一些文字信息,例如当前正在执行的类、方法和其他状态信息,包括以一种更适合阅读的方式整理和组织printStackTrace提供的信息。 结论四:在异常处理模块中提供适量的错误原因信息,组织错误信息使其易于理解和阅读。 反例之五:过于庞大的try块 代码:3行-14行。 经常可以看到有人把大量的代码放入单个try块,实际上这不是好习惯。这种现象之所以常见,原因就在于有些人图省事,不愿花时间分析一大块代码中哪几行代码会抛出异常、异常的具体类型是什么。把大量的语句装入单个巨大的try块就象是出门旅游时把所有日常用品塞入一个大箱子,虽然东西是带上了,但要找出来可不容易。 一些新手常常把大量的代码放入单个try块,然后再在catch语句中声明Exception,而不是分离各个可能出现异常的段落并分别捕获其异常。这种做法为分析程序抛出异常的原因带来了困难,因为一大段代码中有太多的地方可能抛出Exception。 结论五:尽量减小try块的体积。 反例之六:输出数据不完整 代码:7行-11行。 不完整的数据是Java程序的隐形杀手。仔细观察这段代码,考虑一下如果循环的中间抛出了异常,会发生什么事情。循环的执行当然是要被打断的,其次,catch块会执行??就这些,再也没有其他动作了。已经输出的数据怎么办?使用这些数据的人或设备将收到一份不完整的(因而也是错误的)数据,却得不到任何有关这份数据是否完整的提示。对于有些系统来说,数据不完整可能比系统停止运行带来更大的损失。 较为理想的处置办法是向输出设备写一些信息,声明数据的不完整性;另一种可能有效的办法是,先缓冲要输出的数据,准备好全部数据之后再一次性输出。 结论六:全面考虑可能出现的异常以及这些异常对执行流程的影响。 改写后的代码
本文的结论不是放之四海皆准的教条,有时常识和经验才是最好的老师。如果你对自己的做法没有百分之百的信心,务必加上详细、全面的注释。 另一方面,不要笑话这些错误,不妨问问你自己是否真地彻底摆脱了这些坏习惯。即使最有经验的程序员偶尔也会误入歧途,原因很简单,因为它们确确实实带来了“方便”。所有这些反例都可以看作Java编程世界的恶魔,它们美丽动人,无孔不入,时刻诱惑着你。也许有人会认为这些都属于鸡皮蒜毛的小事,不足挂齿,但请记住:勿以恶小而为之,勿以善小而不为。2005-12-17Goingmm Subscription
Powered by: BlogJava Copyright © Goingmm