OpCodes.Endfinally Pole
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Przenosi kontrolę z fault
klauzuli or finally
bloku wyjątku z powrotem do programu obsługi wyjątków infrastruktury języka wspólnego (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
Wartość pola
Uwagi
W poniższej tabeli wymieniono format zestawu szesnastkowy instrukcji i microsoft intermediate language (MSIL) wraz z krótkim podsumowaniem referencyjnym:
Format | Format zestawu | Opis |
---|---|---|
DC | endfinally endfault |
Kończy klauzulę finally or fault bloku wyjątku. |
Nie ma żadnych zachowań przejścia stosu dla tej instrukcji.
Endfinally
i endfault
sygnalizuj koniec klauzuli finally
or fault
, aby odwijanie stosu było kontynuowane do momentu wywołania programu obsługi wyjątków. Instrukcja endfinally
or endfault
przenosi kontrolkę z powrotem do mechanizmu wyjątków interfejsu wiersza polecenia. Następnie mechanizm wyszukuje następną finally
klauzulę w łańcuchu, jeśli blok chroniony został opuszczony z instrukcją urlopu. Jeśli blokada chroniona została zakończona z wyjątkiem, interfejs wiersza polecenia wyszuka następny finally
lub fault
, lub wprowadź procedurę obsługi wyjątków wybraną podczas pierwszego przekazywania obsługi wyjątków.
Instrukcja endfinally
może pojawiać się tylko leksykalnie w finally
bloku. W przeciwieństwie do instrukcji nie ma wymogu endfilter
, aby blok zakończył się instrukcją endfinally
i w bloku może znajdować się tyle endfinally
instrukcji, ile jest wymaganych. Te same ograniczenia dotyczą instrukcji endfault
i fault
bloku.
Kontrolki nie można przenieść do finally
bloku (lub fault
), z wyjątkiem mechanizmu wyjątków. Kontrolki nie można przenieść z finally
bloku (lub fault
), z wyjątkiem użycia throw
instrukcji lub wykonywania endfinally
instrukcji (lub endfault
). W szczególności nie można "wypadać" z finally
bloku (lub fault
) ani wykonać Ret instrukcji lub Leave w bloku finally
(lub fault
).
Należy pamiętać, że endfault
instrukcje i endfinally
są aliasami — odpowiadają one temu samemu kodowi operacyjnemu.
Następujące Emit przeciążenie metody może używać endfinally
kodu opcode (endfault
), a także ILGenerator
metody EndExceptionBlock.