- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第十四章 异常处理
C#语言程序设计 李朔 @数信学院 Email: chn.nj.ls@ C#语言程序设计基础 第14章 异常处理 异常和异常处理 C#中的异常处理结构 异常的传播与处理 主动引发异常 使用异常的原则和技巧 异常和异常处理 程序中的错误 语法错误,不符合语言的语法规则,不能通过编译 int y = 100 / x; 逻辑错误/潜在错误,可通过编译,运行结果与预期不一致(或在运行时出错) int x = int.Parse(Console.ReadLine()); int y = 100 / x; 异常Exception 由于运行时错误而导致程序的非正常终止叫做程序异常 例. 查错 异常发后的原因可能是代码本身的问题,也可能是外部环境的问题,如用户操作、操作系统错误、硬件或网络故障等。 程序的“健壮性/鲁棒性”要求程序尽可能地进行容错处理。 在程序中直接校验出错情况,例子P312 使用代码校验种出错情况会低开发效率和代码可读性 当程序更为复杂时,使用代码校验各种出错情况是非常困难/不可能的 书例 p313 30/(x-2)/(y-x)/(5-y) 另一种解决问题的机制(结构)叫异常处理 将可能出现运行时错误的区域标出 指定出错处理代码(异常处理代码) 当运行时未按预期方式运行时(或出错),程序不是即中止,而是转去执行所指定的异常处理代码,等异常被成功处理之后再回到正常运行状态 例P14_1.cs 异常处理try-catch结构 try-catch结构 正常情况下try{…}代码段中语句依次执行,catch{…}代码码段不执行 try{…}中有异常发生时,引发异常语句之扣的语句将被忽略,程序转向catch{…}代码段执行相应错误处理 catch语句可捕获指定的异常,方法是在catch语句后指定希望捕获的异常类型,表示该种类型异常发生时由该catch代码段捕获处理 一个try语句后可以跟多个catch语句,针对不同异常进行不同处理 例P14_2.cs Exception类是其他所有异常的基类,catch可写成catch(Exception) Try-catch代码段中如果有两个catch语句所捕获的异常存在继承关系,应确保捕获派生类的catch语句在前,而捕获基类的catch语名在后,否则捕获派生类catch语句无效 try-catch-finally结构 在try-catch结构后加上finally语句 可以有多个catch,但finally语句定在所有catch语句后,而且只能出现一次 不论程序在执行过程中是否发生异常,finally语句中的代码段总是被执行 例P14_3.cs finally语句具有强制执行的特性 finally代码段中不允许使用return语句 finally 中break、continue、goto语句转移的目的地也必须在此finally代码段中,不能跳出 P317例 通常可将清理资源,保存数据等工作放在finally中 注意,finally代码段本身不进行异常处理。若其中发生异常,程序一样会终止。 finally代码段中可嵌套使用try-catch(-finally)语句 try-finally try代码段后无catch语句,紧跟finally 不进行异常处理 若无异常发生,按正常方式执行 如果try部分执行中引发异常,该异常将在执行完finally代码段后被抛出 try-finally实际上并不能处理异常,若发生异常,只是用finally代码段进行一些收尾工作,而不保证异常发生后能继续正常运行。书例P318 异常的传播与处理 异常传播 当异常在try代码段中被引发时,程序控制权将在异常处理结构中转移,直至找到一个能够处理该异常的catch语句,否则中止程序 异常传播步骤 (1)如果当前的异常处理结构中包含能够处理该异常的catch语句(即产生的异常类型与catch语句指定的异常类型匹配),程序控制权转第一个catch语句,异常传播结束. 注意:未指定异常类型或指定Exception异常类型的catch语句能够处理所有的异常 (2)没有找到能够处理该异常的catch语句(无异常类型相匹配),则程序通过当前的异常处理结构(如果存在finally代码段则执行它) (3)如果程序到达更外层的一个异常处理结构,转(1)步处理步骤 (4)如果异常在当前的成员方法中没有得到处理,则当前方法的执行代码被中止 (5)若当前方法是程序所在进程或线程的主方法,则整个程序结束运行。否则程序控制权转移给调用当前方法的代码,重复第(1)步。例P14_4.cs Exception类 .NET类库中所有其他异常类的基类,是对所有异常的抽象。 其构造函数有多个overload 可以不带参数 也可以指定一个字符串类
您可能关注的文档
最近下载
- 室内装修拆除施工方案.pdf VIP
- SL1500型风电机组培训.pptx VIP
- GB_T 17626.30-2023 电磁兼容 试验和测量技术 第30部分:电能质量测量方法.docx VIP
- F701仪表使用说明书1.docx VIP
- 人教版二年级上册数学全册教学设计(配2025年秋新版教材).docx
- 食材采购配送服务方案以及供应标准.docx VIP
- 投诉处理汽车顾问式销售课件.pptx VIP
- 江西省2025年度全省中小学教师及特岗教师招聘笔试模拟试卷含答案详解.docx VIP
- YDT 4901-2024医疗健康大数据平台 数据资产管理技术要求和测试方法.pdf VIP
- 《数据结构》课程标准.doc VIP
文档评论(0)