异常处理程序语法

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

尝试关键字用于构建基于帧的异常处理程序。以下示例显示尝试 - 异常处理程序的结构。

尝试{

//守卫的代码体

}

except(filter-expression){

//异常处理程序块

}

请注意,尝试块和异常处理程序块需要大括号({})。不允许使用去en语句跳入尝试块的主体或异常处理程序块。此规则适用于尝试 - 尝试 - 最后语句。

尝试块包含异常处理程序保护的守卫体代码。一个函数可以有任意数量的尝试 - 语句,这些异常处理语句可以嵌套在同一个函数或不同的函数中。如果尝试块中发生异常,系统将进行控制并开始搜索异常处理程序。有关此搜索的详细说明,请参阅异常处理.

异常处理程序仅接收单个线程中发生的异常。这意味着如果尝试块包含对CreateProcessCreateThread函数的调用,则新进程或线程中发生的异常不会分派到此处理程序。

系统会评估每个异常处理程序的过滤器表达式,以防止发生异常的代码,直到处理异常或没有更多的处理程序。必须将过滤器表达式评估为以下三个值之一。

含义
EXCEPTION_EXECUTE_HANDLER 
 系统将控制权转移到异常处理程序,并且在找到处理程序的堆栈框架中继续执行。
EXCEPTION_CONTINUE_SEARCH 
 系统继续搜索一个处理程序。
EXCEPTION_CONTINUE_EXECUTION 
 系统停止搜索处理程序,并将控件返回到发生异常的点。如果异常不连续,则会导致EXCEPTION_NONCONTINUABLE_EXCEPTION异常。

过滤器表达式在尝试 - 语句所在的函数的上下文中进行评估,即使异常可能发生在不同的函数中。这意味着过滤器表达式可以访问函数的局部变量。类似地,异常处理程序块可以访问它所在的函数的局部变量。

有关过滤器表达式和过滤器函数的更多信息,请参阅基于帧的异常处理.