09ch13第13讲异常处理.pptVIP

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
09ch13第13讲异常处理

第13讲 异常处理 介绍C++语言的异常处理。介绍异常的基本概念。 介绍异常的捕获机制、使用try-catch语句捕获异常以及如何使用throw语句抛出异常。 介绍异常的四种处理规则。 异常的基本概念 所谓异常,是指程序在运行过程中遇到的不正常情况。 比如,除数为0、数组越界、存储空间耗尽、期望输入一个int型数据,结果却输入了一个字符串等。 除数为零时的异常 案例名称:除数为零时的异常 程序名称:proj5_01.cpp ? #include iostream.h void main() { int a = 0; int b = 1; int c = b/a; } 异常的实现 C++语言中使用异常需要经历3个步骤: (1)定义异常(try语句块) 将可能产生错误的语句放在try块中; (2)定义异常处理(catch语句块) 将异常处理的语句放在catch块中,以便异常被传递过来时处理。 (3)抛出异常(throw语句块) 检测是否产生异常,若是,则抛出异常。 异常的抛出与捕获 在可能会出现异常的地方,创建异常对象,并用throw语句将它抛出,其格式为:“throw 对象;”。try块的作用就在异常的抛出和处理之间架起一座连接的桥梁。它由关键字try、花括号“{}”和一组能够抛出异常的语句序列组成。 处理异常的catch语句紧跟在try块的后面,其格式为: try { // 语句序列,含有throw语句 } catch (异常声明) { // 处理语句 } 使用try-catch语句 案例名称:使用try-catch语句 程序名称:proj5_02.cpp ? #include iostream.h void main() { try { int a = 0; throw(a); } catch(int ex) { cout 捕获到a = ex endl; } } 捕获函数中的异常 案例名称:捕获函数中的异常 程序名称:proj5_03.cpp? #include iostream.h double Div(double, double ); void main() { try{ cout 7.3/2.0 = Div(7.3, 2.0) endl; cout 7.3/0.0 = Div(7.3, 0.0) endl; cout 7.3/1.0 = Div(7.3, 1.0) endl; } catch(double) { cout 发生除数为零的异常\n; } cout 程序执行成功\n; } double Div(double a, double b) { if(b == 0.0) throw b; return a/b; } 异常的处理规则 以catch开始的程序块是异常处理程序,编写异常处理程序的规则有4条。 (1)在一个try语句后,可以出现任意数量的catch语句。但是在try语句出现之前,不能出现catch语句。 catch语句的数量 案例名称:catch语句的数量 程序名称:proj5_04.cpp ? #include iostream.h void main() { try { int a = 9; throw a; float f = 0.5F; throw f; } catch(float k) { cout 出现异常!float\n; } catch(int k) { cout 出现异常!int\n; } cout 程序执行成功\n; } 异常的处理规则 (2)在catch行的括号中包含数据类型声明,它与函数定义中参数声明起的作用相同,捕获是利用数据类型匹配实现的。在数据类型之后放参数名是可选的。 参数名使被捕获的对象在能够在catch体中使用。比如: l ????“throw 10;”被catch(int k)处理程序捕获; l???????? “throw abc”被catch(char * p)处理程序捕获; l???????? “throw string(abc)”被catch(string a)处理程序捕获 异常的处理规则 (3)如果一个函数抛出一个异常,但是在异常处理中没有与之匹配的catch,则该程序通常调用系统abort()函数中止。 案例名称:找不到与之匹配的catch块 程序名称:proj5_05.cpp ? #include iostream.h void main() { try { char * pString = abcdef; throw (pString); } catch(int k) { cou

文档评论(0)

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

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

1亿VIP精品文档

相关文档