- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
1. 案例说明 设计一个实用的小工具软件——批量创建文件夹。手动创建少量的文件夹不是一件难事,但建立上百个文件夹,则会成为一个负担。本例演示的小程序能根据文本文件中的信息批量地创建文件夹。 2.编程思想 VC++中用于创建文件夹的函数是_mkdir,程序通过读取文本文件中的一行文本,以该文本为名称在指定位置创建文件夹。_mkdir包含在direct.h中,如果创建成功,返回0,否则返回-1。对于指定文件、文件夹不存在等异常情况,用try-catch进行处理。 9.5 案例实训 9.5 案例实训 3. 程序代码 4.运行结果 运行结果如下: 请输入用于批量创建文件夹的文件名:e:\a.txt↙ 请输入批量创建文件夹所在的磁盘与路径:e:\direxample↙ 已成功创建文件夹3个! 第9章 异常处理 程序在运行过程中,由于用户输入错误、越界访问和系统环境资源不足等原因,会导致程序运行不正常或崩溃。程序在设计时必须考虑软件的容错能力,即应对运行时可能出现错误的位置和错误处理方法。在大型应用软件中,相当一部分代码是用于处理程序异常状况的,异常处理是程序的重要组成部分。C++语言的异常处理机制能有效地进行异常检测、异常抛出、异常捕获和异常处理,成为提高程序稳键性的重要手段之一。 本章主要学习异常的抛出和捕获方法、堆栈展开、重新抛出异常、异常与继承以及标准库中的异常类等知识。 9.1 异常概述 9.2 异常处理机制 9.3 构造函数、析构函数和异常 9.4 标准库的异常类层次结构 9.5 案例实训 第9章 异常处理 9.1 异常概述 程序在设计和运行过程中均可能出现各式各样的错误,依据错误产生的原因,主要分为3类:语法错误、逻辑错误和运行错误。 语法错误是程序在编译、连接时,编译器报告的错误。此类错误产生的原因主要是程序结构不合规则、变量没有定义、拼写错误或缺少相关文件等。编译器基本上能正确指出这类错误的位置,修改也比较简单。 逻辑错误是程序能正常编译、连接并运行,但结果错误或偶尔报错。此类错误是由算法设计有误或考虑问题不周全等因素引起,通过调试或测试,通常能查找出错误的原因。 运行错误是程序在执行过程中错误的输入或运行环境没有满足等因素,导致程序非正常终止。运行错误虽然是由于软件在使用过程中用户使用不当或环境资源不足等外在因素引起的,但通常可以事先预料。 异常处理(Exception Handling)就是在运行时刻对运行错误进行检测、捕获和提示等过程。传统的C语言处理运行时错误的方法是用if-else语句检测处理可能发生的异常,其特征是测试程序是否被正确地执行。如果不是,则执行错误处理代码,否则继续运行。虽然这种方式的异常处理也能满足设计要求,但是程序的正常处理流程和错误处理逻辑混合在一起,正常的程序流程被“淹没”在异常判断与处理之中,增加了阅读、修改和维护程序的难度,在多人合作开发的大型软件中该问题更加突出。 9.1 异常概述 9.2 异常处理机制 异常处理作为C++语言的一部分,引入了关键字try(检测异常)、throw(抛出异常)和catch(捕获异常)。在函数中检测到某种错误发生后,函数自己并不处理异常,而是由throw语句引发并抛出异常,仅告知调用函数发生了什么异常。在调用函数中用try-catch语句检测异常并处理。如果抛出的异常没有被调用函数捕获处理,异常就被传递到更高一层的函数调用,最后到达主函数。 9.2 异常处理机制 9.2.1 异常的抛出 抛出异常的语法格式为: throw 表达式 如果在某段程序中检测到可能发生的异常,则用throw语句抛出表达式的值作为发生的异常,异常的数据类型是异常捕获的依据。若函数执行了throw语句,则其后的语句将不再执行,程序流程将返回到调用函数,其功能与return语句相似。 抛出的异常在调用函数中捕获并处理,调用函数中需要用try-catch结构语句来捕获异常并处理。 【例9-1】零为除数的异常处理。 9.2 异常处理机制 程序说明: (1)从运行结果可知,程序运行到divide(34, 0)时,函数抛出了异常,并被第2个catch块捕获,输出错误提示信息。try块中的后面两个语句均没有被执行,程序正常结束。 try块后面的catch块有两个。由于divide函数抛出的值是int类型,故与第2个catch块相匹配。异常捕获的匹配原则是抛出的表达式的数据类型与catch块声明的类型是否一致。 (2)如果通过注释符消除divide函数中throw语句的
您可能关注的文档
最近下载
- DBJ51T 140-2020 四川省不透水土层地下室排水卸压抗浮技术标准.pdf VIP
- 中级无机化学(第二版)全书课件电子教案汇总.ppt
- 船舶保安员Z09_5384-航海知识.doc VIP
- 海尔管理案例分析.doc VIP
- DBJ51T 246-2024 四川省岩土工程勘察钻探护壁技术标准.pdf VIP
- (高清版)-B-T 28053-2023 铝合金内胆碳纤维全缠绕气瓶.pdf VIP
- 人教版高中物理必修第二册第8章机械能守恒定律1功与功率课件.ppt VIP
- 2025-2026学年山东省青岛市八年级上学期期中模拟英语试题(含解析).pdf VIP
- IEEE 1188-2005国外国际标准.pdf
- 安装、调试及验收方案,安装、调试及验收方案.doc VIP
原创力文档


文档评论(0)