共用方式為


rpcExcept 宏 (rpc.h)

RpcExcept 語句會提供 RPC 應用程式的結構化例外狀況處理。

Windows Vista 和更新版本的 Windows: 建議使用 RpcExceptionFilter 來處理最常見的例外狀況,作為 使用 RpcExcept 自定義篩選的替代方案。 不過,自定義例外狀況篩選仍然必須使用 RpcExcept

語法

void RpcExcept(
   expr
);

參數

expr

發生例外狀況時所評估的表達式。 如果 expression 評估為非零值,則會執行例外狀況語句。 如果 expression 評估為零值,回溯會繼續到下一個 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) 。

規格需求

需求
最低支援的用戶端 Windows 2000 Professional [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限桌面應用程式]
目標平台 Windows
標頭 rpc.h

另請參閱

例外狀況處理

RpcExceptionCode

RpcExceptionFilter

RpcFinally

RpcRaiseException