- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
小谈C++异常处理
最近打算学习STL,所以先将之前的C++复习一遍打好基础 :-D 期末的日子也越来越近了,不能在像之前那样子有时间了,所以只能写一些更简单的东西啦. :-D
C++提供了一种完善的异常处理机制,可以使用try和catch对代码进行保护,截获运行时的错误,还可以使用throw抛出一个异常对象.
try{}块中代码运行时,如果出现异常,将按照catch{}块的顺序找到对应的异常对象进行处理
下面的程序展示了简单的try/catch异常处理,第一个try块throw出了一个int类型的异常,第二个try块throw出了一个double类型的异常.后面catch截获了对应的异常.
#include stdio.h
int main(void){
try{
printf(try:1\n);
throw 1;
}
catch(int i){
printf(catch try:1 int:%d\n, i);
}
catch(double d){
printf(catch try:1double %f\n, d);
}
try{
printf(try:2\n);
throw 1.2;
}
catch(int i){
printf(catch try:2 int:%d\n, i);
}
catch(double d){
printf(catch try:2 double:%f\n, d);
}
return 0;
}
运行结果:
try:1
catch try:1 int:1
try:2
catch try:2 double:1.200000
上面的程序只是针对每个异常类型进行处理,你也可以使用catch(…)来处理如何类型的异常.
下面的程序展示使用try/catch(…)来处理被0除的异常.
#include stdio.h
int main(void){
try{
printf(try:1\n);
int a=0;
int b=1/a;
}
catch(...){
printf(catch try:1\n);
}
return 0;
}
运行结果:
try:1
catch try:1
对于会抛出异常的函数我们也可以使用try来对其进行保护.
下面的程序就展示了这点,(其实和上面说的是一样的,这里关键是要引出下文)
#include stdio.h
void func(){
throw 1;
}
int main(void){
try{
printf(try:1\n);
func();
}
catch(int i){
printf(catch try:1 int:%d\n, i);
}
return 0;
}
我们用catch到函数抛出的异常,还可以限定一个函数能够抛出的异常类型
在函数声明后面加上函数可能抛出的异常类型的列表.
如上面的func函数,可以改成下面的形式
void func() throw(int)
{
throw 1;
}
如果给出的可能抛出的异常类型类表为空的话,表示不会抛出任何类型的异常
下面的程序就设置了函数的抛出异常类型类表为空,然后抛出了异常,于是程序被提前终止.
void func() throw()
{
throw 1;
}
int main(void){
func();
return 0;
}
运行结果:
我们也可以在截获到异常的时候继续抛出异常
#include stdio.h
void func(){
try{
throw 1;
}
catch(int){
printf(catch func\n);
throw; //继续抛出异常,然后函数返回
}
printf(这条语句不会被执行\n);
}
int main(void){
try{
func();
}
catch(int){
printf(catch main\n);
}
return 0;
}
运行结果:
catch func
catch main
到此为止,上面只是对于C++异常处理简单的介绍一下,不够对于我目前的开发来说知道这些就够用了.
今晚是平安夜,祝大家快乐啊!
您可能关注的文档
最近下载
- 2025广西南宁兴宁区“点对点”送工和乡村公益性岗位专管员招聘1人笔试备考题库及答案解析.docx VIP
- 新人教版二年级上册数学第四单元《根据四则运算的意义解决问题》名师教学设计.doc VIP
- 第八章两宋的法制.ppt VIP
- 中医内科学——肥胖.pdf VIP
- 江苏供电局计量装置轮换安装工程施工方案.doc VIP
- 机器人集成解决方案 (机器人+).pdf VIP
- 六年级上册心理健康教育计划及教案.pdf VIP
- 神经系统的分级调节ppt课件.pptx VIP
- AI测试练习试题及答案.doc
- 2025广西南宁江南区“点对点”送工和乡村公岗专管员招聘2人备考练习题库及答案解析.docx VIP
文档评论(0)