Поделиться через


Макрос RpcExcept (rpc.h)

Инструкция RpcExcept обеспечивает структурированную обработку исключений для приложений RPC.

Windows Vista и более поздние версии Windows: RpcExceptionFilter рекомендуется для структурированной обработки исключений для наиболее распространенных исключений в качестве альтернативы пользовательским фильтрам с RpcExcept. Однако настраиваемые фильтры исключений должны по-прежнему использовать RpcExcept.

Синтаксис

void RpcExcept(
   expr
);

Параметры

expr

Выражение, которое вычисляется при возникновении исключения. Если выражение принимает ненулевое значение, выполняются инструкции исключения. Если выражение принимает нулевое значение, очистка продолжается до следующей функции RpcTryExcept или RpcTryFinally .

Возвращаемое значение

None

Remarks

Если исключение не возникает, операторыexpression и exception пропускаются и выполнение продолжается в инструкции, следующей за инструкцией RpcEndExcept.

Составной оператор после предложения RpcTryExcept является телом или защищенным разделом. Составной оператор после предложения 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
Header rpc.h

См. также раздел

Обработка исключений

RpcExceptionCode

RpcExceptionFilter

RpcFinally

RpcRaiseException