“异常处理”,是程序员在软件开发中不可回避的问题,是我们必须拿捏好的技术。我从开始接触到“异常处理”,到能灵活运用“异常处理”,中间经历了一段难忘的,也可以说是痛苦的回忆。
第一阶段:初识“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”从认识,到盲目崇拜,到望而却步,再到发现它的美,给了我不少启示:
原文来自:http://www.yehuchina.org/wordpress/exception-handling-reflections/1、对一门技术不能盲目崇拜,不能滥用;
2、前人总结的经验要学习,但不能拿来主义,要吸收其精华,不能什么都要;
3、要善于总结编程过程中的启示,这样你的技术才能快速提高;
4、要与开发团队中的同事多交流,多请教别人,多帮助别人,这也就是在 帮助你自己。