终止处理程序语法

【勇芳软件工作室】汉化HomePreviousNext

尝试最后关键字用于构建终止处理程序。以下示例显示尝试 - 最后终止处理程序的结构。

尝试{

//守卫的代码体

}

最后{

// finally block

}

尝试 - 语句一样,尝试块和最后块都需要大括号({}),并且不允许使用去en语句跳转到任一块中。

尝试块包含被终止处理程序保护的守卫的代码体。一个函数可以有任意数量的尝试 - 最后语句,这些终止处理结构可以嵌套在同一个函数或不同的函数中。

只要控制流离开尝试块,就执行最后块。但是,如果从尝试块中调用ExitProcessExitThread函数,则不会执行最后块。

如果尝试块的执行由于异常处理基于帧的异常处理程序的异常处理块而终止,则在执行异常处理块之前执行最后块。类似地,从尝试块调用标准C longjmp的函数会导致执行最后块,然后执行恢复到longjmp的操作的目标。如果尝试块执行由于正常控制语句(返回打破继续去en)而终止),则最后块将被执行。

AbnormalTermination功能可以在最后块内使用,以确定尝试块是否顺序终止__,无论是否到达结束括号(})。由于调用longjmp的,跳转到异常处理程序,返回打破继续去en语句,因此尝试块将被视为异常终止。请注意,无法顺序终止导致系统通过所有堆栈帧向后搜索,以确定是否必须调用任何终止处理程序。这可能导致由于执行数百个指令而导致的性能下降。

最后块的执行可以通过以下任何方式终止。

*执行块中的最后一个语句并继续下一条指令

*使用正常的控制语句(返回打破继续去en

*使用longjmp的或跳转到异常处理程序

最后块在尝试 - 最后语句所在的函数的上下文中执行。这意味着最后块可以访问该函数的局部变量。