Freigeben über


OpCodes.Endfinally-Feld

Überträgt die Steuerung aus der fault-Klausel oder finally-Klausel eines Ausnahmeblockes zurück an den CLI-Ausnahmehandler (Common Language Infrastructure).

Namespace: System.Reflection.Emit
Assembly: mscorlib (in mscorlib.dll)

Syntax

'Declaration
Public Shared ReadOnly Endfinally As OpCode
'Usage
Dim value As OpCode

value = OpCodes.Endfinally
public static readonly OpCode Endfinally
public:
static initonly OpCode Endfinally
public static final OpCode Endfinally
public static final var Endfinally : OpCode

Hinweise

In der folgenden Tabelle werden das hexadezimale und das Assemblyformat der MSIL (Microsoft Intermediate Language) jeweils mit einer Kurzreferenz aufgeführt:

Format

Assemblyformat

Beschreibung

DC

endfinally

endfault

Beendet die finally-Klausel oder fault-Klausel eines Ausnahmeblockes.

Bei dieser Anweisung treten im Stapel keine Zustandswechsel auf.

Endfinally und endfault signalisieren das Ende der finally-Klausel bzw. fault-Klausel, sodass die Entladung des Stapels bis zum Aufrufen des Ausnahmehandlers fortgesetzt werden kann. Die endfinally-Anweisung oder endfault-Anweisung überträgt die Steuerung zurück an den CLI-Ausnahmemechanismus. Dieser sucht anschließend nach der nächsten finally-Klausel in der Kette, wenn der geschützte Block mit einer Abbruchanweisung beendet wurde. Wenn der geschützte Block mit einer Ausnahme beendet wird, sucht die CLI nach dem nächsten finally oder fault oder führt den Ausnahmehandler aus, der in der ersten Phase der Ausnahmebehandlung ausgewählt wurde.

Eine endfinally-Anweisung kann nur lexikalisch in einem finally-Block enthalten sein. Im Gegensatz zur endfilter-Anweisung muss der Block nicht mit einer endfinally-Anweisung enden. Außerdem kann der Block beliebig viele endfinally-Anweisungen enthalten. Dieselben Einschränkungen gelten für die endfault-Anweisung und den fault-Block.

Die Steuerung kann nur anhand von Ausnahmeverfahren in einen finally-Block (oder fault-Block) übertragen werden. Die Steuerung kann nur durch eine throw-Anweisung oder die endfinally-Anweisung (oder endfault-Anweisung) aus einem finally-Block (oder fault-Block) übertragen werden. Das heißt, dass Sie einen finally-Block (oder fault-Block) nicht ohne weiteres beenden und keine Ret-Anweisung oder Leave-Anweisung in einem finally-Block (oder fault-Block) ausführen können.

Beachten Sie, dass die endfault-Anweisung und endfinally-Anweisung Aliase sind, die sich auf denselben Opcode beziehen.

Die folgende Überladung der Emit-Methode verwendet den endfinally-Opcode (endfault) und die ILGenerator-Methode EndExceptionBlock.

  • ILGenerator.Emit(OpCode)

  • ILGenerator.EndExceptionBlock()

Plattformen

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

Siehe auch

Referenz

OpCodes-Klasse
OpCodes-Member
System.Reflection.Emit-Namespace