- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
深入浅出c#(中文版 图文皆译)第十章
程序员并不一定要做消防员
你努力的工作,阅读了很多的技术手册和一些有趣的Head First 书,你已经达到了专业领域
的象牙塔:程序员大师。但是你的程序还是会崩溃,或者其行为与预期不符。并不是让你戒
掉愉悦的编程习惯去修复一些奇怪的bug但是有了异常处理,你可以写代码来处理出现的
问题。更好的是,你可以对这些问题做出反应,而且保持程序运行。
Brian 的借口要是可移动的
Brian 最近换到了国际部去工作。他现在整天坐飞机各处跑。但是他还是需要掌管着自己的
借口,所以他把你写的程序装在了自己的笔记本上,走到哪儿带到哪儿。
但是程序不能运行!
Brian 点击了“Random Excuse ”按钮,看到了一个很糟糕的错误。似乎是找不到他的借口,
怎么回事?
下面的代码有问题。这段代码会抛出五个异常,错误
信息显示在右侧。你的任务就是把抛出异常的代码和异常匹配起来。读读异常消息,那有很
好的提示作用。
你的任务就是把出问题的代码和出的问题匹配起来。
DividedByZero 异常并不一定要发生。你可以通过观察知道代码中有
些地方有问题。其他的异常也是一样。这些异常都是可以避免的--对
于异常了解的越多,就越能够避免程序崩溃。
你的程序抛出一个异常的时候,.NET 就会生成一个Exception 对象
你已经看到.NET 是以何种方式告诉你程序中出错了的:一个异常。在C# 中,异常发生的时
候,就会生成一个代表所发生问题的对象。毫无悬念,它叫做Exception 。
比如,你有一个含有4 个元素的数组。然后你试着去访问第十六个元素(位序是 15,由于
我们的数组是从0 开始的)
.NET 不辞劳苦的创建一个对象是因为它想要给你提供关于导致异常的全部信息。你可能会
根据这些信息来修改错误,或者改变你处理程序中某个状况的方式。
在我们的例子中,IndexOutOfRangeException 提醒你你有一个bug :你试图去访问一个越界
的数组元素。你也得到了问题出在代码中什么位置的信息,这样跟踪问题就简单多了(即使
你有数千行代码)。
问:为什么有这么多种异常?
答:有很多种情况下你都可能会写出 C#无法应付的问题。如果程序只是给出一个概述的错
误信息,那么检错就会变得很困难。如果确切的知道出了什么错误再去检错就容易多了。
问:说真的,什么是异常?
答:它是程序出问题的时候.NET 创建的一个对象。
问:等会,什么?它是一个对象?
答:对,异常就是一个对象。一个异常中的属性告诉你关于异常的信息。比如,它有一个
Message 属性,异常窗口就是靠它生成的。.NET 生成异常就是要给你提供尽可能多的关于
执行产生异常的语句的时候发生了什么的信息。
问:我还是不明白。不好意思。为什么有如此多种类的异常呢?
答:因为你的代码有太多种可能以未预期的方式行为。有太多种的情况会导致你的代码崩溃。
如果你不知道崩溃的原因,检错就很难了。通过在不同情况下抛出不同的异常,.NET 给你
提供了很多很有价值的信息来追踪并修改问题。
问:照这么说,异常是用来帮助我而不是在跟屁股后面给我捣乱的?
答:对!异常就是帮你去预测未预期的行为。很多人见到异常就感觉很沮丧。但是如果你把
异常视为.NET 帮你追踪和修改错误的一种方式的话,它就真的可以在你在试着去追踪导致
问题的代码的时候帮你一个大忙。
问:这么说,我的代码抛出异常的时候并不一定就是我做错了什么了?
答:对。有时候数据和你预期的不一样。别忘了使用你的代码的人,而人总是以无法预期的
方式行为。.NET 就是以这种方式帮你去处理未预期的情况,这样你的代码就可以一直顺利
的运行而不会给出晦涩无用的错误信息了。
问:所有的异常都很容易找出来吗?
答:不是,很不幸,有时候你的代码会出问题,而仅仅是看看代码很难找到问题所在。所以
IDE 给你一个很有用的工具,叫做debugger 。它让你暂停你的程序并逐语句的执行,并且在
此过程中检查每个变量和字段的值。这样,找出未预期的代码就比较容易了。这是找到并修
改异常的最好时机,或者,一开始就避免了异常会更好。
异常就是为了帮你找到并修改某些以你未
预期的方式行为的代码的情况。
Brian 的代码做了一些我们没有预期到的事儿
Brian 写这个程序的时候,没有想到用户会试图去从一个空文件夹中取出随机的借口。
①Brian 把程序指向笔记本上的一个空文件夹并点击Random Button 的时候就发生了这个问
题。我们来看看可不可以找出出了什么问题。下面是我们在 IDE 之外运行程
您可能关注的文档
最近下载
- 人力资源管理课后答案德斯勒.docx
- 马克思主义新闻观十二讲之第九讲实现新闻传播权利与社会责任的统一.docx VIP
- 国际航运管理 全套课件.PPT VIP
- 财务共享服务教学课件4第四章 费用报销流程.pptx VIP
- 手术患者意外伤害预防.pptx VIP
- 2025年新人教版数学7年级上册整册同步教学课件.pptx
- 广告理论与实务:各类广告媒介PPT教学课件.pptx VIP
- 第1课 课题一《课外生活小调查·周末生活我采访》(教学设计)-2024-2025学年三年级上册综合实践活动浙教版.docx VIP
- 广告理论与实务:印刷媒体广告PPT教学课件.pptx VIP
- 铭记历史·开创未来--2025-2026学年高一上学期纪念抗日战争胜利80周年爱国主义教育主题班会.pptx VIP
文档评论(0)