- 1、本文档共33页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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;
您可能关注的文档
- 14.2祛湿剂PPT.ppt
- 14 - 急性化脓性腹膜炎与腹部损伤病人的护理PPT.ppt
- 12黄元奎-全科医学导论PPT.ppt
- 123---老年人中医药健康管理服务技术规范培训课件PPT.ppt
- 14假肢班 第二节 概论PPT.ppt
- 14.ICU患者镇痛镇静(2012年IPAD)PPT.ppt
- 13、14讲消化、泌尿系统疾病PPT.ppt
- 14、功能失调性子宫出血(6月1日)PPT.ppt
- 14.心功能不全PPT.ppt
- 14肩关节周围炎PPT.ppt
- 2024-2030年PC隔音板市场投资前景分析及供需格局研究预测报告.docx
- 2024-2030年一次性餐具行业市场发展分析及发展前景与投资机会研究报告.docx
- 2024-2030年中国3D体感试衣镜行业消费动态与经营趋势预测研究报告.docx
- 2024-2030年中国3-氟苯乙酸行业市场发展趋势与前景展望战略研究报告.docx
- 2024-2030年中国2-氰乙酰胺(CAS 107-91-5)行业市场发展趋势与前景展望战略分析报告.docx
- 2024-2030年三极管全产业供给规模预测及前景经营效益调研报告.docx
- 2024-2030年中国4K监控摄像头市场供需格局及前景营销渠道调研报告.docx
- 2024-2030年中国4G终端行业运行趋势与竞争状况分析报告.docx
- 2024-2030年中国4-叔丁基苯甲酸市场深度调查与前景预测分析报告.docx
- 2024-2030年中国1,4-桉叶素行业供需方面及投资规划深度研究研究报告.docx
最近下载
- 地铁物业管理培训课件.pptx
- 工程数学(本)形成性考核作业4.doc
- GB T 34520.7-2017 连续碳化硅纤维测试方法 第7部分:高温强度保留率 标准.pdf
- 自编教材审核表(模板).pdf
- 一例慢性阻塞性肺疾病急性加重期合并II型呼吸衰竭患者的个案护理PPT.pptx
- [大庆]黑龙江大庆市民政局所属事业单位选调事业编制工作人员笔试上岸试题历年高频考点难、易错点附带答案详解.docx VIP
- ISO9001 14001 ISO45001检查表审核方法全套.docx VIP
- 增光膜规格说明书.pdf
- 人教版数学四年级第一单元教材解读及集体备课课件.pptx VIP
- 2024 离婚协议书 离婚协议(打印版).docx
文档评论(0)