1. 1、本文档共33页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
19 异常PPT

1 异常 第十八章 2 回顾 静态绑定与动态绑定 多态 虚函数 虚析构函数 抽象基类 3 目标 异常处理的好处 异常的抛出和传播 异常的捕获和处理 4 异常处理 在编写程序时,应该考虑确定程序可能出现的错误,然后加入处理错误的代码。也就是说,在环境条件出现异常情况下,不会轻易出现死机和灾难性的后果,而应有正确合理的表现。这就是异常处理。 异常处理机制可以提高程序的健壮性。 7 异常处理的方法2-2 使用C++异常处理机制 判断异常情况,发现异常后抛出异常 正常程序流程和异常处理模块分开 程序员可以专注于正常流程编程,异常处理模块稍候编写 8 C++异常处理机制 程序在产生错误后抛出异常 异常处理模块捕获并处理异常 异常处理机制一般无法使程序恢复正常执行 可以为程序提供有序的整理操作 异常处理机制将程序中的正常处理代码与异常处理代码显式区别开来,提高了程序的可读性 9 异常处理的实现2-1 关键字try:出错时产生异常的代码放在try块中 关键字throw:throw语句可以抛出任意类型的异常,包括自定义类型 关键字catch:catch块(异常处理器)捕捉和处理异常 10 异常处理的实现2-2 try { //try语句块 } catch(类型1 参数1) { //针对类型1的异常处理 } catch (类型2 参数2) { //针对类型2的异常处理 } … catch (类型n 参数n) { //针对类型n的异常处理 } //throw 表达式; 11 异常处理的规则 try分程序必须出现在前,catch紧跟出现在后。catch之后的圆括号中必须含有数据类型,捕获是利用数据类型匹配实现的。 如果程序内有多个异常错误处理模块,则当异常错误发生时,系统自动查找与该异常错误类型相匹配的catch模块.查找次序为catch出现的次序。 如果异常错误类型为C++的类,并且该类有其基类,则应该将派生类的错误处理程序放在前面,基类的错误处理程序放在后面。 12 异常处理基础 如果try块没有异常抛出,则程序跳过所有catch块 try块可以直接或间接抛出异常 try块抛出异常后,程序控制离开try块 抛出异常后,程序在try块后面的catch块中逐个有哪些信誉好的足球投注网站合适的异常处理器 一个异常处理器一般只捕捉一种类型的异常 抛出异常之后,程序控制无法返回到抛出点 13 除数为零的异常例子2-1 #include iostream.h #include string.h class MyException {//定义异常类MyException public: MyException(char *str) {msg = str; } char * show() {return msg; } private: char *msg; }; double division(int dividend, int divisor){ if (divisor == 0) //除数为0时抛出异常 throw MyException(error: divided by zero!); return (double)dividend/divisor; } 14 除数为零的异常例子2-2 main(){ int a, b; double result; coutEnter two integers (EOF to end):; while (cinab){ try { result = division(a,b); couta / b = resultendl; } catch (MyException e) { coute.show()endl; } coutendl; coutEnter two integers (EOF to end):; } return 0; } 15 异常的抛出 关键字throw可以带任何类型的操作数,包括自定义类型(异常对象) 抛出异常时,throw语句生成异常对象的一个副本,异常处理器执行完毕后删除该临时对象 异常抛出后,最近的一个匹配的异常处理器捕获该异常 16 抛出多种异常类型2-1 #include iostream.h main(){ int a, myint; float myfloat; double mydouble; coutEnter a integer (EOF to end):; while (cina){ //抛出不同类型的异常 try { switch(a % 3) { case 0: //输入整数为3的倍数时抛出整型异常 myint = a;

文档评论(0)

erfg4eg + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档