- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
VisualC++中的异常处理浅析.doc
Visual C++中的异常处理浅析 Visual C++提供了对C语言、C++语言及MFC的支持,因而其涉及到的异常(exception)处理也包含了这三种类型,即C语言、C++语言和MFC的异常处理。除此之外,微软对C和C++的异常处理进行了扩展,提出了结构化异常处理(SEH)的概念,它支持C和C++(与之相比,MFC异常处理仅支持C++)。 一个典型的异常处理包含如下几个步骤: (1)程序执行时发生错误; (2)以一个异常对象(最简单的是一个整数)记录错误的原因及相关信息; (3)程序检测到这个错误(读取异常对象); (4)程序决定如何处理错误; (5)进行错误处理,并在此后恢复/终止程序的执行。 C、C++、MFC及SEH在这几个步骤中表现出了不同的特点。本文将对这四种异常处理进行介绍,并对它们进行对比分析。本文例程的调试平台为Visual C++6.0,操作系统为Windows XP,所有程序均调试通过。 在进入正式的讲解之前,先说几句废话。许多的编程新手对异常处理视而不见,程序里很少考虑异常情况。一部分人甚至根本就不考虑,以为程序总是能以正确的途径运行。譬如我们有的程序设计者调用fopen打开一个文件后,立马就开始进行读写操作,根本就不考虑文件是否正常打开了。这种习惯一定要改掉,纵使你再不愿意!这是软件健壮性的需要!异常处理不是浪费时间! 1.C语言异常处理 1.1 异常终止 标准C库提供了abort()和exit()两个函数,它们可以强行终止程序的运行,其声明处于stdlib.h头文件中。这两个函数本身不能检测异常,但在C程序发生异常后经常使用这两个函数进行程序终止。下面的这个例子描述了exit()的行为: #include stdio.h#include stdlib.hint main(void){ exit(EXIT_SUCCESS); printf(程序不会执行到这里\n); return 0;} 在这个例子中,main函数一开始就执行了exit函数(此函数原型为void exit(int)),因此,程序不会输出程序不会执行到这里。程序中的exit(EXIT_SUCCESS)表示程序正常结束,与之对应的exit(EXIT_FAILURE)表示程序执行错误,只能强行终止。EXIT_SUCCESS、EXIT_FAILURE分别定义为0和1。 对于exit函数,我们可以利用atexit函数为exit事件挂接另外的函数,这种挂接有点类似Windows编程中的钩子(Hook)。譬如: #include stdio.h#include stdlib.hstatic void atExitFunc(void){ printf(atexit挂接的函数\n);}int main(void){ atexit(atExitFunc); exit(EXIT_SUCCESS); printf(程序不会执行到这里\n); return 0;} 程序输出atexit挂接的函数后即终止。来看下面的程序,我们不调用exit函数,看看atexit挂接的函数会否执行: #include stdio.h#include stdlib.hstatic void atExitFunc(void){ printf(atexit挂接的函数\n);} int main(void){ atexit(atExitFunc); //exit(EXIT_SUCCESS); printf(不调用exit函数\n); return 0;} 程序输出: 不调用exit函数 atexit挂接的函数 这说明,即便是我们不调用exit函数,当程序本身退出时,atexit挂接的函数仍然会被执行。 atexit可以被多次执行,并挂接多个函数,这些函数的执行顺序为后挂接的先执行,例如: #include stdio.h#include stdlib.hstatic void atExitFunc1(void){ printf(atexit挂接的函数1\n);}static void atExitFunc2(void){ printf(atexit挂接的函数2\n);}static void atExitFunc3(void){ printf(atexit挂接的函数3\n);}int main(void){ atexit(atExitFunc1); atexit(atExitFunc2); atexit(atExitFunc3); return 0;}
您可能关注的文档
最近下载
- DBJ51_T102-2018:四川省建筑地下结构抗浮锚杆技术标准.pdf VIP
- 机关集中办公区建设与管理的调查研究.pdf VIP
- 广东省广州市第六十五中学2023-2024学年高二10月考试历史试题(原卷版).pdf VIP
- 建筑工程项目管理国内外研究进展.docx VIP
- 维生素B市场现状及发展前景分析报告.docx VIP
- 2025年公务员类辅警协警-行政职业能力测验参考题库含答案解析.docx VIP
- 钢结构生产工艺流程课件.pptx VIP
- DB34T 4402-2023 817肉鸡养殖技术规程.docx VIP
- 7年级上学期英语StarterLeeson18复习卷.docx VIP
- 2025年房地产经纪人职业资格考试模拟试卷:房地产经纪人职业资格考试备考策略与技巧.docx VIP
文档评论(0)