rpcExcept 宏 (rpc.h)

RpcExcept 语句为 RPC 应用程序提供结构化异常处理。

Windows Vista 及更高版本的 Windows:建议将 RpcExceptionFilter 用于最常见的异常的结构化异常处理,作为 RpcExcept 自定义筛选器的替代方法。 但是,自定义异常筛选器仍必须使用 RpcExcept

语法

void RpcExcept(
   expr
);

参数

expr

发生异常时计算的表达式。 如果 表达式 的计算结果为非零值,则执行异常语句。 如果 表达式 的计算结果为零值,则展开将继续到下一个 RpcTryExceptRpcTryFinally 函数。

返回值

备注

如果未发生异常,则会跳过 表达式异常语句 ,并在 RpcEndExcept 语句后面的语句处继续执行。

RpcTryExcept 子句后面的复合语句是 body 或 guarded 节。 RpcExcept 子句后面的复合语句是异常处理程序。 处理程序指定在执行受保护节的主体时引发了异常的情况下要执行的一组操作。 执行过程如下所示:

  1. 执行受保护节。
  2. 如果在执行受保护的节期间未发生异常,则 RpcEndExcept 子句之后的 语句将继续执行。
  3. 如果在受保护的节执行期间或在受保护的节调用的任何例程中发生异常,则会计算__except表达式,值将确定异常的处理方式。 有三个值:
    • EXCEPTION_CONTINUE_EXECUTION (–1) 异常被消除。 从出现异常的点继续执行。
    • EXCEPTION_CONTINUE_SEARCH (0) 无法识别异常。 继续向上搜索堆栈查找处理程序,首先是所在的 try-except 语句,然后是具有下一个最高优先级的处理程序。
    • 异常可识别。 通过执行__except复合语句将控制转移到异常处理程序,然后在__except块之后继续执行。
由于 RpcExcept 表达式计算为 C 表达式,因此它仅限于单个值、条件表达式运算符或逗号运算符。 如果需要更大量的处理,表达式可调用返回上面列出的三个值之一的例程。

RpcExceptionCode 可以在 表达式异常语句 中使用,以确定发生的异常。

存在以下限制:

  • 不允许将 (通过 goto) 跳转到 受保护的语句 中。
  • 不允许将 (通过 goto) 跳转到 异常语句 中。
  • 不允许通过受保护的语句goto) 返回或跳转 (。
  • 不允许从异常语句返回或跳转 (goto) 。

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 rpc.h

另请参阅

异常处理

RpcExceptionCode

RpcExceptionFilter

RpcFinally

RpcRaiseException