- 2
- 0
- 约1.34万字
- 约 77页
- 2019-01-11 发布于福建
- 举报
性的最有效方法之一c语言实现出网错处理的方法是
第九章 异常处理 9.4.5 异常的重新抛出 如果运行错误抛出的异常对象虽然被直接调用环境 中的异常处理器捕获,但根据所获得错误信息在当前 运行环境中无法对异常进行恰当的处理,则需要将所 捕获的异常对象从当前的运行环境重新抛向高一层运 行环境,使产生异常的错误能在高一层运行环境中得 到恰当的处理或将异常对象继续重新抛出。注意,如 果在当前运行环境中没有捕获运行错误抛出的异常对 象,则重新抛出异常对象的操作是自动发生的。 实现重新抛出异常的方法是在捕获异常对象的异常 处理器分支中使用不带参数的 throw 语句。例如使用省 略号做参数捕获任意类型异常对象时,由于无法得到 有关异常的信息而将异常对象重新抛出: catch(…) { cout an unkown exception was thrown endl; throw; } 由于每个被抛出异常对象在未被处理之前是被保留 的,所以更高层次的运行环境的处理器总可以获得来 自这个异常对象的完整信息。 9.4.6 未捕获的异常 如果测试块 try 执行过程中抛出的异常对象在当前的 异常处理器没有被捕获,则异常对象将进入更高一层 的运行环境中。这种异常对象的抛出、捕获、处理过 程按照运行环境的调用关系逐层进行,直到在某个层 次的运行环境的异常处理器中捕获并恰当处理了异常 对象才停止,否则将一直进行到调用系统的特定函数 terminate() 终止程序的运行。例如,在异常对象的创建 过程中、异常对象的被处理过程中或异常对象的析构 过程中又抛出了新异常对象,就会产生所抛出的异常 对象不能被捕获。 注意: ⑴ 特殊函数 terminate() 也是一个使用函数指针实现调 用的函数,因此允许用户定义自己特定的程序终止 函数。在 C 标准库中,terminate() 的函数指针的缺 省值是指向系统函数 abort() 的调用地址。abort() 的 功能是不调用正常的程序终止函数而直接从程序中 退出。 ⑵ 使用系统函数 set_terminate 来设定用户自定义的终 止函数作为 terminate() 函数的新执行函数,取代该 函数的当前执行函数,并可以通过 set_terminate 的 返回值获得 terminate() 的当前执行函数调用地址。 ⑶ 用户的自定义终止函数除了必须不含输入参数,其 返回值必须为 void 外,不能抛出任何异常对象,但 可以调用一些程序终止函数,如 abort() 。 在实际应用中,如果函数 terminate() 被调用,就意味 着程序的运行错误已经无法被恢复。 例9-3 展示了异常对象的析构过程中抛出异常对象将 导致程序终止函数 terminate() 被调用。为了能观 察到 terminate() 被调用的情况,定义了一个自定 义的终止函数,并使用 set_terminate 将其设定为 terminate() 的新执行函数。 9.5 异常处理中对象的清除 异常处理是否有效的关键就在于:当异常对象被抛 出,程序从正常流程转入异常处理器的执行流程时, 正常流程执行环境中所创建的对象除异常对象外必须 被正确地清除。 C++ 的异常处理器可以保证程序流程离开一个运行 环境的作用域时,该作用域中所有结构完整的对象的 析构函数将被调用,以确保清除这些对象。因此,如 何保证对象的完整创建就成为需要特别关注的问题。 例9-4 描述了由于在对象的创建过程中发生异常,使对 象不能被完整创建,导致异常对象抛出时这些不 完整的对象不能被清除。同时还展示了如果 unexpected() 函数执行中再次抛出意外的异常对 象时将会产生什麽结果。 程序运行结果被记录在文本文件 cleanup.out 中,其内 容如下: constructing noisy 0 name [before array] noisy::new[] constructing noisy 1 name [array elem] constructing noisy 2 name [array elem] constructing noisy 3 name [array elem] constructing noisy 4 name [array elem] constructing noisy 5 name [array elem] destructing noisy 4 name [array elem] destructing noisy 3 name [array elem] destructing noisy 2 name [array elem] destructing noisy 1 n
您可能关注的文档
最近下载
- PV3930- 氙灯老化试验标准.pdf VIP
- 2025年《反不正当竞争法》市场混淆行为案例分析及答案.docx
- 十堰教师招聘真题2023.docx VIP
- 动力工程及工程热物理专业英语.ppt VIP
- 自来水厂环评:清镇市莲花山自来水厂新建工程-迎燕水库配套水厂工程项目环评(2021年新版环评)环境影响报告表.pdf VIP
- 2025春人教版数学七下《第七章 数学活动》新版课件(23页).pptx VIP
- 工程项目标准化管理体系及措施要求.docx VIP
- 23S516混凝土排水管道基础及接口图集.pdf VIP
- 宪法学(第二版)(马克思主义理论研究和建设工程重点教材)课件第4章国家性质和国家形式.pptx VIP
- 中国旅游文化(全套课件).ppt VIP
原创力文档

文档评论(0)