结构化异常处理(C++)
Windows 95、 Windows 98 和 Windows 2000 (以前 windows NT) 支持一个可靠的方法来处理异常,调用结构化异常处理,涉及操作系统的协作,还有直接支持在这种编程语言。
语法
尝试除语句 :
__try 复合语句
__except ( 表达式 ) 复合语句
备注
异常是意外的或破坏处理能力通常执行的操作。 异常可由硬件和软件检测。 硬件异常被零包含数值类型的部件和溢出。 软件异常包括您检测和信号对系统通过调用 windows 和特殊情况检测的 RaiseException 函数的参数。
可以使用结构化异常处理中编写更可靠的代码。 可以确保资源,如内存块和文件,在意外停止情况下,将相应地关闭。 您还可以处理特定问题,如内存不足,与不依赖于 goto 语句或阐述测试返回代码的简洁构造的代码。
尝试除外 和 尝试最终 语句是 Microsoft 对使应用程序能够对控件进行编程,隐藏事件将正常终止执行的 C 语言。
备注
结构化异常处理与 C 和 C++ 源文件一起使用。但是,对于 C++ 不专门设计。虽然本地对象的析构函数将调用,如果在 c. C++ 程序使用结构化异常处理 (如果使用 /EHsc),可以确保代码是可移植使用 C++ 异常处理。C++ 异常处理 结构更为灵活,因为它可以任何类型的异常。
有两个结构化异常处理机制:
处理程序的这两种类型是不同的,因此,它们通过调用 “展开的过程与紧密相关堆栈”。发生异常时,窗口查找当前处于活动状态的新安装的异常处理程序。 处理程序可以执行下列三种操作之一:
通过控件为其他处理程序 (识别异常的失败)。
识别,但关闭异常。
标识和处理异常。
识别异常的异常处理程序可能不是在运行的功能,当出现异常。 有时它可以位于一个功能更高在堆栈。 当前正在运行的功能,以及任何功能在堆栈帧,终止。 在此过程中,堆栈 “中展开”:终止的函数的局部变量,,除非它们是 静态,从堆栈中清除。
因为它展开堆栈,操作系统提示您为每个函数编写的所有终止处理程序。 若要停止处理程序中使用使您有机会清理会保持打开状态由于不正常终止的资源。 如果输入了临界区,可以在终止处理程序可以退出。 如果程序关闭,可以执行其他管理任务 (如关闭和删除临时文件。
如果您具有使用结构化异常处理的 C 模块,它们可使用 C++ 异常处理的 C++ 模块组合。 异常处理差异参见。
有关更多信息,请参见: