OpCodes.Endfinally Pole
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Přenese řízení z fault
klauzule nebo finally
bloku výjimky zpět do obslužné rutiny výjimky common language infrastructure (CLI).
public: static initonly System::Reflection::Emit::OpCode Endfinally;
public static readonly System.Reflection.Emit.OpCode Endfinally;
staticval mutable Endfinally : System.Reflection.Emit.OpCode
Public Shared ReadOnly Endfinally As OpCode
Hodnota pole
Poznámky
Následující tabulka uvádí hexadecimální formát sestavení instrukce a formát sestavení MSIL (Microsoft Intermediate Language) spolu se stručným souhrnem referenčních informací:
Formát | Formát sestavení | Description |
---|---|---|
DC | endfinally endfault |
Ukončí klauzuli finally nebo fault bloku výjimky. |
Pro tuto instrukci neexistují žádná chování přechodu zásobníku.
Endfinally
a endfault
signalizují konec klauzule finally
or fault
tak, aby odvíjení zásobníku bylo možné pokračovat, dokud se nevyvolá obslužná rutina výjimky. Instrukce endfinally
nebo endfault
přenese řízení zpět do mechanismu výjimek rozhraní příkazového řádku. Mechanismus pak vyhledá další finally
klauzuli v řetězci, pokud byl chráněný blok ukončen s pokynem pro opuštění. Pokud byl chráněný blok ukončen s výjimkou, rozhraní příkazového řádku vyhledá další finally
nebo fault
, nebo zadá obslužnou rutinu výjimky zvolenou při prvním průchodu zpracování výjimek.
Instrukce endfinally
se může objevit jen lexicky v rámci finally
bloku.
endfilter
Na rozdíl od této instrukce není vyžadováno, aby blok končil endfinally
instrukcemi a v bloku může být endfinally
tolik instrukcí, kolik je potřeba. Stejná omezení platí pro endfault
instrukce a fault
blok.
Ovládací prvek nelze přenést do finally
bloku (nebo fault
) s výjimkou mechanismu výjimky. Řízení nelze přenést z finally
bloku (nebo fault
) s výjimkou použití throw
instrukce nebo provedení instrukce endfinally
(nebo endfault
). Konkrétně nemůžete "vypadnout" z finally
bloku (nebo fault
) nebo provést Ret instrukce nebo Leave v rámci finally
bloku (nebo fault
).
Všimněte si endfault
, že pokyny a endfinally
jsou aliasy – odpovídají stejnému opcode.
Následující Emit přetížení metody může použít endfinally
opcode (endfault
) a také metodu ILGenerator
EndExceptionBlock.