对“异常处理”的几点思考

5 篇文章 0 订阅
4 篇文章 0 订阅

“异常处理”,是程序员在软件开发中不可回避的问题,是我们必须拿捏好的技术。我从开始接触到“异常处理”,到能灵活运用“异常处理”,中间经历了一段难忘的,也可以说是痛苦的回忆。
第一阶段:初识“try …catch…finally”异常处理模块

当我在书上看到“try…catch…finally”这个异常处理模块时,心中狂喜。还有这么好的技术,那我以后写代码,就不用担心那些讨厌的异常了。哈哈

第二阶段:滥用“try…catch…finally”异常处理模块

我想这么好的技术,一定要多运用到编写的代码中,所以我每次写代码,都把处理过程一股脑的放在

try{

//处理过程代码

}catch(Exception ex){

Messagebox.show(ex.message);

}finally{

//销毁使用的资源

}模块中;

第三阶段:噩梦般的调试

好日子到头了,当程序出现问题时,我找不到具体是那句语句出现了错误,噩梦般的调试折磨着我。我开始向前辈请教,他们说,是异常处理模块“try…catch…finally”被你滥用了,把很多该暴露的问题都隐藏了,最好不要使用“try…catch…finally”这个异常处理模块;我回去把那些“try…catch…finally”异常处理模块都去掉后,确实很快就找了错误位置,并做了响应的错误处理。有了这个经历,我再也不敢使用这个“try…catch…finally”异常处理模块;

第四阶段:发布后,噩梦再次来临

软件发布后,当用户在使用的时候,还是会报一些错误,而且报出的错误界面非常不友好,那些应该给开发人看的,而不是给客户看的。我又吃到了不少苦头。我开始思考,让开发人员把所有可能的异常都想到,那是不可能完成的事情,而且那些错误处理需要经验的累积以及日常编程的总结,而我这样一个经验还不足的人应该如果避免那些无法预知的异常呢?我开始思考如何解决这个问题;

第五阶段:对“try…catch…finally”异常处理模块的再次认识,再次思考

我想“try…catch…finally”这门技术肯定有它的好处,只是我还没有发现它的美。那它的美在何处呢?

下面是我目前认识水平的理解,有待深化:

1、不必要把所有的代码放在”try….catch….finally”模块里;

2、只对那些代码,如:文件操作,数据库操作,调用别人DLL中方法的操作和调用其他平台库中方法时,需要加“try…catch…finally”异常处理模块(有待补充…)

3、既然捕获了异常,就要对它进行适当的处理。不要捕获异常之后又把它丢弃,不予理睬。

4、在catch语句中尽可能指定具体的异常类型,必要时使用多个catch。不要试图处理所有可能出现的异常。

5、保证所有资源都被正确释放。充分运用finally关键词。

6、在异常处理模块中提供适量的错误原因信息,组织错误信息使其易于理解和阅读。

7、尽量减小try块的体积。

8、全面考虑可能出现的异常以及这些异常对执行流程的影响。

总结:经过了这样的一个过程,我对“try…catch…finally”从认识,到盲目崇拜,到望而却步,再到发现它的美,给了我不少启示:

1、对一门技术不能盲目崇拜,不能滥用;

2、前人总结的经验要学习,但不能拿来主义,要吸收其精华,不能什么都要;

3、要善于总结编程过程中的启示,这样你的技术才能快速提高;

4、要与开发团队中的同事多交流,多请教别人,多帮助别人,这也就是在 帮助你自己。

原文来自:http://www.yehuchina.org/wordpress/exception-handling-reflections/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值