C#异常处理 怎样做好异常处理.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
软件开发时都比较烦出现错误,特别是windows应用程序,经常会造成程序崩溃,结果很多开发人员有了把错误消灭或者捕捉所有异常的心思,认为这样就正确了。 百度“C# 异常处理”第一条,开头说“在C#中,异常就是发生错误的带名词,即一旦有错误,我们就认为程序发生了异常。比较专业的解释:? 异常实际上是程序中错误导致中断了正常的指令流的一种事件.(你可以认为异常是任何中断正常程序流程的错误条件)。”异常成了典型的大反派,等同于错误,是需要消灭的。 MSDN的描述却截然相关,“C# 语言的异常处理功能可帮助您处理程序运行时出现的任何意外或异常情况”,是又红又专的正派形象,是用来处理意外和异常情况,减少错误的。 那么我们到底是该,开写代码就try catch消灭掉所有异常,还是像MSDN所说,让它来帮助我们粗粒程序运行时出现的任何意外或异常情况呢? 认识异常 首先需要说明,错误和异常是不同的,比如你想写1*0结果写成了1/0那就是错误,如果你就是想写a/b,结果运行时b=0,那么这就会引发异常,但不见得就会造成程序错误,当然你会想,既然知道是a/b,b==0在之前就应该进行检查,没检查就是写算是代码有错,对小段代码来说没问题,但是实际情况各种各样,你无法完全避免,这时,异常就登场了。说上面这段的目的是说,错误应该避免,异常无法避免,对于错误我们不做评价,异常却需要说道说道。 想要自己写的代码不出现异常(当前这是错误的),首先你需要认识异常。.net中的Exception——异常,是.net设计出来,用以帮助系统正确运行用的一种机制的对象载体,这种机制的目的不是让程序崩溃,而是帮助你处理异常情况,如果你有消灭异常的心思,那么你还不懂它。 在早期的程序开发,比如C中,并没有.net中那么多千奇百怪的异常(当然.net和C中的异常都是可以定义的),很多时候,执行一个操作,就得到一个结果,如果开发人员不自己去检查,你不会知道一个会影响你程序结果的问题发生了,最终执行下去,出错了也不知道,比如值类型越界了,指针偏移超出预期了,程序是不会告诉你的,等待你的项目上线运行了一个月之后,发现一大堆的数据里,某些时候,部分数据的小数点位错位了,那么你得从海量的代码中一个个去检查,并承担后果。最后你只会骂溢出都不提示太坑人了。 好了,在.net中,由于是托管代码,运行时内存上会做检查,托管代码的运行会做检查,同时第三方程序,或者COM组件在托管中运行时会被检查,导致你在执行程序,调用某段代码时,这段代码会在执行结果超出预期时,强烈的告诉你,这不对,有问题了,你得处理,你不处理,你程序就会崩溃。这样的结果就是,当程序内部运行出现问题时,你的程序崩溃了,这儿也报错,哪儿也报错,你没机会骂编译器了,而是你的老板或者用户骂你。为了防止这种情况出现,你必须进行分析、处理异常,在万不得已的时候抛出异常,让调用方去头疼;当然,如果也可以在万不得已的时候把异常都try catch掉,留个表面功夫,看似不报错了,我对这种代码的要求就是,不写详细处理可以,写至少3行的注释。 如何写好的代码,写健壮的代码,需要做几件件事: 一是先检查输入,对于异常的输入、错误的输入、无效的输入等等,应首先检查、屏蔽,防止垃圾进来,进来了就是错,比如前面提到a/b,别人给你个a和b,你得检查。就像家里买个东西,你肯定得在确认收货前先检查吧,如果你不检查就收了,以后用的时候出了问题谁都麻烦。 二是要有“责任”心,把自己这段代码可能造成的问题都分析出来,那些是可允许的执行结果,可以输出或者返回,那些是不允许的结果,出现了可能会造成问题的,你都得告诉别人,可以强硬点,让别人用的时候必须处理,把自己从“责任”中摘出来。我对开发人员的要求就是如此,你可以在你的代码中为执行一个很小的+-*/操作列出10个检查项,抛出5个合适的异常,没问题,如果别的调用方不去处理,那是他的责任;但是如果你没有发现问题,把一个异常引入了,就是你的责任。 这种方式推广的结果是,写代码的对自己的操作分析得清清楚楚,调用别人代码时,要把别人写的代码看清楚,别人的每个返回值,每个异常都得去处理,分析该怎么应对,自己才没有责任。这种方法似乎很不尽人情,但是只有当每个人写代码的时候,都去考虑自己写的代码是否会引入错误或者异常,调用的代码异常是否都应被处理,自己写的这块会不会给自己带来责任的时候,你的这个模块或者你的这个系统才能说承担得了责任。 如何写异常 认识了什么是异常,了解写异常应该达到什么目的之后,我们再来谈下,如何写异常。看过很多的.net代码,开发人员在写代码的过程中,大多数在做的事情是将MS的异常、或者第三方程序的异常去捕捉掉,然后变成不同返回着或者处理过程消化掉。反观MS的代码,你会发现它没事就throw一个异常出来,那么到

文档评论(0)

kehan123 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档