| 操作系统 办公 实用知识 设计 开发 WEB开发 移动开发 数据库 软件工程 网管 安全 管理 信息化 答疑 渠道 |
C++ 异常处理 A第8章 异常处理 C++Builder支持C++异常处理、基于C的结构异常处理以及VCL异常处理。 注意 本章中所用的关于C++异常处理及结构异常处理的例子通过命令行使用bcc32.exe可成功地编译并运行,而不是使用IDE。在调用标准C++例程及对象时可用C++异常处理。 VCL异常处理可在IDE内进行。实际上,尽管C++Builder支持C++异常处理和基于C的结构异常处理。但使用C++Builder和VCL可开发包含内嵌异常处理的例程的应用程序,这些例程可以在出现错误时自动发送异常。 8.1 C++异常处理 8.1.1异常处理的ANSI规定 C++语言规定所有的异常都应在一个try-block中被发送。这个块之后紧接着是一个或多个catch块,用于识别和处理try-block中发生的错误。 8.1.2异常处理语法 throw "overflow"; 在这个例子中,语句发送一个描述异常类型的对象,在这里,是一个算术运算溢出。从而程序的另一部分可捕捉并处理这个异常对象。
注意 C程序中不支持try、catch及throw关键字。 一个由try确定的try-block后必须紧接着一个由catch确定的处理程序。try-block是一段用于确定程序执行时的控制流的语句。若一个异常在try-block中被发送,程序控制被转移到适当的异常处理程序。 处理程序是一段被设计来用于处理异常的代码。C++语言要求至少有一个处理程序紧接着try-block。 程序应包括一个可处理程序中可能发生的各个异常的处理程序。注意C程序中不支持try、catch及throw关键字。一个由try确定的try-block后必须紧接着一个由catch确定的处理程序。try-block是一段用于确定程序执行时的控制流的语句。若一个异常在try-block中被发送,程序控制被转移到适当的异常处理程序。处理程序是一段被设计来用于处理异常的代码。C++语言要求至少有一个处理程序紧接着try-block。程序应包括一个可处理程序中可能发生的各个异常的处理程序。 8.1.3声明异常 8.1.4发送异常 · 程序搜索匹配的处理程序。 若无异常被发送,程序正常执行。 示例
例2:下例只是将上例中的异常重新发送。
下例在没有处理程序存在是调用terminate
例3:下例指定了festival和test可发送的异常列表。其他异常不能从festival中被传递出去。
若festival产生了一个Out之外的异常,它被看作一个意外的异常,程序控制会转到例4中所示的unexpected函数。 例4:下例说明test不应发送任何异常。若test中的任何函数(例如操作符new)发送了一个异常,它应在test内被捕捉和处理。否则,这个异常就是test规定之外的异常。可调用set_unexpected()设置另外一个处理程序。否则,unexpected函数将被调用。
当异常发生时,throw语句初始化一个T类型(匹配arg参数的类型)的临时对象在throw(Targ)中使用。对象的其他拷贝可在编译器需要时生成。因此,对于定义一个如下所示的异常对象的拷贝结构很有用。
今日推荐
|
重点推荐
领军企业技术文库
+更多领军技术文库
最新专题
电子杂志订阅
| ||||||||