尝试最终语句(c)

Microsoft 专用

try-finally 语句是 Microsoft 对使应用程序能够确保清理代码执行的 C 语言,用于中断代码块的执行。 清理包括此任务与释放内存,如用于关闭文件和释放文件句柄。 try-finally 语句为具有若干位置检查对错误进行了会导致过早从实例返回的实例尤其有用。

  • 尝试最终语句:
    __try 复合语句

    __finally 复合语句

复合语句,在 __try 子句是所控制的部分中。 在 __finally 子句后的复合语句是终止处理程序。 处理程序指定执行的一组操作所控制的部分退出时,所控制的部分是否有名为的异常 (不正常终止) 或的标准请失败 (正常终止)。

控件按简单的顺序执行到达 __try 语句 (将失败)。 在控件中输入 __try 语句时,其关联的处理程序变为活动状态。 执行如下所示:

  1. 所控制的部分执行。

  2. 终止处理程序调用。

  3. 在终止处理程序完成时,会在 __finally 语句之后继续。 无论所控制的部分的结束方式 (例如,通过在控制体外部的一个 goto 语句或通过 return 语句),终止处理程序中执行,在控制流从所控制的部分之前。

__leave 关键字在 try-finally 语句内有效的块。 __leave 的效果是跳转到 try-finally 块的末尾。 终止处理程序会立即执行。 虽然 goto 可以使用语句获得相同的结果, goto 语句导致堆栈展开。 ,因为它不涉及堆栈解散, __leave 语句的效率更高。

退出 try-finally 语句使用 return 语句或 longjmp 运行时函数被视为不正常终止。 阅读本文档 __try 语句,但是,合法跳出一是非法的。 是一个起始点和为目标之间的所有 __finally 语句必须运行。 这称为 “展开局部堆栈”。

终止处理程序不调用,如果进程中杀害,在执行 try-finally 语句时。

备注

结构化异常处理与 C 和 C++ 源文件一起使用。但是,对于 C++ 不专门设计。可以确保代码是可移植使用 C++ 异常处理。此外, C++ 异常处理机制更为灵活,因为它可以任何类型的异常。

备注

对 C++ 程序, C++ 应使用异常处理而不是结构化异常处理。有关更多信息,请参见《 C++ 语言的异常处理引用

尝试除语句 参见示例查看 try-finally 语句的工作方式。

特定于 Microsoft 的结尾

请参见

参考

尝试最终语句