- 1、本文档共13页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验13: C++的异常处理
【实验目】本章实验给出了全面的操作步骤,请学生按照给出的步骤独立完成实验,以达到要求的实验目标。
第一阶段——指导学习(60分钟)
异常的常用方法
异常是在运行时发生的错误事件,例如被零除、算术或数组溢出和空闲堆空间耗尽。异常处理是C++的一项功能,它提供了处理运行异常的标准机制。在C++中异常处理是使用关键字try、catch和throw实现的。
Try块包含一个称为监视块的代码块。写在try块中的是一组有可能引发异常的程序语句。下面的代码片段说明了try块的用法:
示例:
try
{
throw 47;
} throw 47这一行故意引发一个异常。这个try块也可以包含一些程序语句,它们可能引发任何或不引发任何异常。
如果在try块执行过程中没有引发异常,则不执行跟在后面的catch处理程序,程序将按照所编写的方式继续执行。引发异常时,控制将传递给匹配的catch处理程序。下列程序示范了catch处理程序的用法:
catch(int err)
{
cout 捕获的异常号码: err endl;
return;
} 如果引发一个整型的异常,将执行上面的代码。发生这样的事件时,将向用户显示消息“捕获的异常号码:”以及表示捕获到的异常是“err”。
如果使用得当,异常处理可以非常强大。Catch可以捕获任何数据类型,而throw可以引发任何数据类型。如果需要,catch可以捕获任何类型异常:
catch(…)
{
} 省略号表示捕获所有引发的异常。
#include iostream.h
class exception
{
public:
void func()
{
try
{
throw 47;
}
catch(int err)
{
cout 捕获的异常号码: err endl;
return;
}
catch(...)
{
cout 捕获任何类型的异常 endl;
}
cout 没有检测到任何异常! endl;
return;
}
};
int main()
{
exception ex;
ex.func();
return 0;
} 运行结果如图8.1所示。
图8.1:输出结果
思考:将上述程序修改为如下,能否正常运行
#include iostream.h
class exception
{
public:
void func()
{
try
{
throw 47;
}
catch(...)
{
cout 捕获任何类型的异常 endl;
}
catch(int err)
{
cout 捕获的异常号码: err endl;
return;
}
cout 没有检测到任何异常! endl;
return;
}
};
int main()
{
exception ex;
ex.func();
return 0;
} 函数嵌套情况下异常处理
声明函数f1,代码如下:
void f1()
{
void f2();
try{
f2();
}
catch(double)
{
cout OK1! endl;
throw; //将异常向调用它的函数抛出
}
cout end1 endl;
} 在代码中实现调用f2()函数抛出异常,就由异常捕获机制获取并且进行相应的异常处理。并将此异常向调用他的函数抛出。
声明函数f2,代码如下:
void f2()
{
void f3();
try{
f3();
}
catch(double)
{
cout OK2! endl;
throw; //将异常向调用它的函数抛出
}
cout end2 endl;
} 在代码中实现调用f2()函数抛出异常,就由异常捕获机制获取并且进行相应的异常处理。并将此异常向调用他的函数抛出。
声明函数f3,代码如下:
void f3()
{
double a = 0;
try
{
throw a;
}
catch(double)
{
cout OK3! endl;
throw;//将异常向调用它的函数抛出
}
cout end3 endl;
} 在代码中的try块中实现抛出自定义异常,由catch块捕获此异常,并将此异常向调用他的函数抛出。
建立程序,代码如下:
int main()
{
void f1();//调用f1()
try{
f1()
您可能关注的文档
- 企业费用管理数据库设计幻灯片.doc
- 数据库加锁操作_副本.doc
- 第五章 Ant帮助文档.docx
- 使用 SqlDataSource 控件选择数据教材.docx
- ROM和RAM的区别.doc
- 我国电子商务面临的问题及应采取的对策.doc
- 液晶显示器的主要性能指标与参数-试题.doc
- 应用程序和驱动程序通信的源码.doc
- VB第6讲课后练习答案.doc
- 数据库常用数据类型_副本.doc
- 鼎信JB-QT-TS3200S火灾报警控制器安装使用说明书.pdf
- 北大青鸟老版本火灾报警主机系统故障处理技术指导.pdf
- 霍尼韦尔H4600系列火灾报警控制器 消防联动控制器.docx
- 蓝天JB-QB-501A火灾报警控制器使用说明书.pdf
- 三十六计完整版详解.docx
- JB-TG-PTW-6600E火灾报警控制器(联动型)产品使用说明书.pdf
- 三十六计经典策略解析.pptx
- 贵州省县中新学校计划项目2024-2025学年高一下学期期中联考英语试卷(答案不全,无听力音频及听力原文).pdf
- 黑龙江省牡丹江市阳明区牡丹江市第二高级中学2024-2025学年高二下学期6月月考语文试题(含答案).pdf
- 四川省广汉中学2024-2025学年高一下学期6月月考英语试卷(含答案,无听力音频及听力原文).pdf
文档评论(0)