Share via


RpcExcept マクロ (rpc.h)

RpcExcept ステートメントは、RPC アプリケーションの構造化例外処理を提供します。

Windows Vista 以降のバージョンの Windows: RpcExceptionFilter は、RpcExcept を使用したカスタム フィルターの代わりに、最も一般的な例外の構造化例外処理に推奨されます。 ただし、カスタム例外フィルターでは RpcExcept を引き続き使用する必要があります。

構文

void RpcExcept(
   expr
);

パラメーター

expr

例外が発生したときに評価される式。 expression が 0 以外の値に評価された場合、例外ステートメントが実行されます。 expression が 0 の値に評価された場合、アンワインドは次の RpcTryExcept 関数または RpcTryFinally 関数に進みます。

戻り値

なし

解説

例外が発生しない場合、 ステートメントと 例外ステートメント はスキップされ、 RpcEndExcept ステートメントの後の ステートメントで実行が続行されます。

RpcTryExcept 句の後の複合ステートメントは、本文または保護されたセクションです。 RpcExcept 句の後の複合ステートメントが例外ハンドラーです。 ハンドラーは、保護されたセクションの本体の実行中に例外が発生した場合に行われる一連の操作を指定します。 次のように実行されます。

  1. 保護されたセクションが実行されます。
  2. 保護されたセクションの実行中に例外が発生しない場合は、 RpcEndExcept 句の後の ステートメントで実行が続行されます。
  3. 保護されたセクションの実行中、または保護されたセクションが呼び出すルーチンで例外が発生した場合、__except式が評価され、値によって例外の処理方法が決定されます。 次の 3 つの値があります。
    • EXCEPTION_CONTINUE_EXECUTION (–1) 例外は無視されます。 例外が発生した位置から実行を継続します。
    • EXCEPTION_CONTINUE_SEARCH (0) 例外が認識されません。 最初に try-except ステートメントを含むハンドラーを検索してから、次に優先順位が最も高いハンドラーについてスタックを検索し続けます。
    • 例外が認識されました。 __except複合ステートメントを実行して例外ハンドラーに制御を転送し、__except ブロックの後に実行を続行します。
RpcExcept 式は C 式として評価されるため、1 つの値、条件式演算子、またはコンマ演算子に制限されます。 より広範な処理が必要な場合、前に挙げた 3 つの値の 1 つを返すルーチンを式で呼び出すことができます。

RpcExceptionCode は、 ステートメントと 例外ステートメント の両方で使用して、発生した例外を判断できます。

次の制限事項が適用されます。

  • 保護されたステートメントへのジャンプ (goto を介して) は許可されません。
  • 例外ステートメントへのジャンプ (goto 経由) は許可されません。
  • 保護されたステートメントから (goto を介して) 返したりジャンプしたりすることはできません。
  • 例外ステートメントから (goto を介して) 返したりジャンプしたりすることはできません。

要件

要件
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー rpc.h

関連項目

例外処理

RpcExceptionCode

RpcExceptionFilter

RpcFinally

RpcRaiseException