Freigeben über


RpcExcept-Makro (rpc.h)

Die RpcExcept-Anweisung bietet eine strukturierte Ausnahmebehandlung für RPC-Anwendungen.

Windows Vista und höhere Versionen von Windows: RpcExceptionFilter wird für die strukturierte Ausnahmebehandlung für die häufigsten Ausnahmen als Alternative zu benutzerdefinierten Filtern mit RpcExcept empfohlen. Benutzerdefinierte Ausnahmefilter müssen jedoch weiterhin RpcExcept verwenden.

Syntax

void RpcExcept(
   expr
);

Parameter

expr

Ausdruck, der ausgewertet wird, wenn eine Ausnahme auftritt. Wenn der Ausdruck zu einem wert ohne Zero ausgewertet wird, werden die Ausnahmeanweisungen ausgeführt. Wenn der Ausdruck auf einen Nullwert ausgewertet wird, wird das Entladen mit der nächsten RpcTryExcept- oder RpcTryFinally-Funktion fortgesetzt.

Rückgabewert

Keine

Bemerkungen

Wenn keine Ausnahme auftritt, werden der Ausdruck und die Ausnahmeanweisungen übersprungen, und die Ausführung wird mit der Anweisung nach der RpcEndExcept-Anweisung fortgesetzt.

Die zusammengesetzte Anweisung nach der RpcTryExcept-Klausel ist der Textkörper oder der überwachte Abschnitt. Die zusammengesetzte Anweisung nach der RpcExcept-Klausel ist der Ausnahmehandler. Der Handler gibt eine Reihe von Aktionen an, die abgerufen werden, wenn eine Ausnahme während der Ausführung des Texts des geschützten Bereichs ausgelöst wird. Die Ausführung erfolgt folgendermaßen:

  1. Der geschützte Bereich wird ausgeführt.
  2. Wenn während der Ausführung des überwachten Abschnitts keine Ausnahme auftritt, wird die Ausführung an der Anweisung nach der RpcEndExcept-Klausel fortgesetzt.
  3. Wenn während der Ausführung des überwachten Abschnitts oder in einer Routine, die der überwachte Abschnitt aufruft, eine Ausnahme auftritt, wird der __except Ausdruck ausgewertet, und der Wert bestimmt, wie die Ausnahme behandelt wird. Es gibt drei Werte:
    • EXCEPTION_CONTINUE_EXECUTION (–1) Ausnahme wird geschlossen. Fortsetzen der Ausführung an der Stelle, an der die Ausnahme aufgetreten ist.
    • EXCEPTION_CONTINUE_SEARCH (0) Ausnahme wird nicht erkannt. Fahren Sie fort, im Stapel nach einem Handler zu suchen, zuerst nach enthaltenen try-except-Anweisungen, dann nach Handlern mit der nächst höheren Priorität.
    • Ausnahme wurde erkannt. Übertragen Sie die Steuerung an den Ausnahmehandler, indem Sie die __except zusammengesetzte Anweisung ausführen, und setzen Sie dann die Ausführung nach dem __except-Block fort.
Da der RpcExcept-Ausdruck als C-Ausdruck ausgewertet wird, ist er auf einen einzelnen Wert, den bedingten Ausdrucksoperator oder den Kommaoperator beschränkt. Wenn eine erweiterte Verarbeitung erforderlich ist, kann der Ausdruck eine Routine aufrufen, die einen der drei Werte zurückgibt, die oben aufgelistet sind.

RpcExceptionCode kann sowohl in Ausdrucks- als auch in Ausnahmeanweisungen verwendet werden, um zu bestimmen, welche Ausnahme aufgetreten ist.

Es gelten folgende Einschränkungen:

  • Das Springen (durch einen Goto) in bewachte Anweisungen ist nicht zulässig.
  • Das Springen (über einen Goto) in Ausnahmeanweisungen ist nicht zulässig.
  • Das Zurückgeben oder Springen (über einen Goto) von bewachten Anweisungen ist nicht zulässig.
  • Das Zurückgeben oder Springen (über einen Goto) von Ausnahmeanweisungen ist nicht zulässig.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile rpc.h

Weitere Informationen

Ausnahmebehandlung

RpcExceptionCode

RpcExceptionFilter

RpcFinal

RpcRaiseException