c 面向对象程序设计09 异常处理.ppt

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
int?main() {???int?no; ????cout输入一个整数:; ????while(cinno) ????{ ????????try ????????{?? if(no%2==0) ? //抛出基类对象 ??????????????? ?throw?base();????? ????????????else //抛出派生类对象 ???????????????? throw?derived();? ????????} ???????? ????catch?(derived?d) ????????{ ????????????cout?Exception:?; ????????????d.show(); ????????} catch?(base?b) ????????{?????????? cout?Exception:?; ???????????? b.show(); ????????} ????????cout输入一个整数:; ????} ????return?0; } 运行结果: 输入一个整数:1↙ Exception:?Derived?object 输入一个整数:2↙ Exception:?Base?object * * 第 9 章 异常处理 学习目标 理解异常处理的基本思想 掌握异常处理的实现方法 * 目录 9.1 异常处理基本思想 9.2 异常处理的实现 9.3 综 合 实 例 * 9.1 异常处理基本思想 程序运行的异常问题: 除数为零,数组越界,内存空间不够,无法打开输入文件,输入数据的类型有错等。 解决方法: 在小型程序中,方法简单,通过判别并显示出错信息就能解决。 在大型软件中,函数之间的互相调用以及异常处理会让程序变得非常复杂和庞大。 C++异常处理机制的本质:将错误检测代码和错误处理代码分离。 例9-1 不使用异常处理来处理错误的示例。 输入三角形的三边长a、b、c,求三角形的面积。 ?#include?iostream #include?cmath using?namespace?std; int?main() { ????double?triangle(double,double,double); ????double?a,b,c; ????cinabc; ????while(a0??b0??c0) ????{ ????????coutarea?=??triangle(a,b,c)endl; ????????cinabc; ????} ????return?0; } double?triangle(double?a,double?b,double?c) { ????double?area; ????double?s=(a+b+c)/2; ????area=sqrt(s*(s?a)*(s?b)*(s?c)); ????return?area;? } 运行结果: 3?4?5↙ area?=?6 1?2?5↙ area?=??1.#IND 2?0??1↙ 例9-2 使用异常处理来处理错误的示例。设置异常处理,对不符合构成三角形条件的输出警告信息。 #include?iostream #include?cmath using?namespace?std; int?main() {????double?triangle(double,double,double); ????double?a,b,c; ????cinabc; ??? ????try {???while(a0??b0??c0) ????????{ ????????????cout?area?=?triangle(a,b,c)endl; ????????????cinabc;} ????????} ????catch(double) ????{????????couta=a,b=b,c=c,that?is?not?a?traingle!endl; ????} ????coutendendl; ????return?0; } double?triangle(double?a,double?b,double?c) { ????double?s=(a+b+c)/2; ????if?(a+b=c||b+c=a||c+a=b)? ????????throw?a; ????return?sqrt(s*(s-a)*(s-b)*(s-c)); } 运行结果: 3?4?5↙ area?=?6 1?2?5↙ a=1,b=2,c=5,that?is?not?a?traingle! end 说明 程序首先把可能出

文档评论(0)

132****9295 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档