OpCodes.Endfinally Champ
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Transfère à nouveau le contrôle de la clause fault
ou finally
d'un bloc d'exception au gestionnaire d'exceptions 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
Valeur de champ
Remarques
Le tableau suivant répertorie le format d’assembly MSIL et hexadécimal de l’instruction, ainsi qu’un bref résumé des références :
Format | Format d’assembly | Description |
---|---|---|
DC | endfinally endfault |
Termine la finally clause ou fault d’un bloc d’exception. |
Il n’existe aucun comportement de transition de pile pour cette instruction.
Endfinally
et endfault
signalent la fin de la clause ou fault
afin que le finally
déroulement de la pile puisse continuer jusqu’à ce que le gestionnaire d’exceptions soit appelé. L’instruction endfinally
ou endfault
transfère le contrôle au mécanisme d’exception CLI. Le mécanisme recherche ensuite la clause suivante finally
dans la chaîne si le bloc protégé a été arrêté avec une instruction leave. Si le bloc protégé a été arrêté avec une exception, l’interface CLI recherche le suivant finally
ou fault
, ou entre le gestionnaire d’exceptions choisi lors de la première passe de gestion des exceptions.
Une endfinally
instruction ne peut apparaître que lexicalement dans un finally
bloc. Contrairement à l’instruction endfilter
, il n’est pas nécessaire que le bloc se termine par une endfinally
instruction, et il peut y avoir autant d’instructions endfinally
dans le bloc que nécessaire. Ces mêmes restrictions s’appliquent à l’instruction endfault
et au fault
bloc.
Le contrôle ne peut pas être transféré dans un finally
bloc (ou fault
) sauf par le biais du mécanisme d’exception. Le contrôle ne peut pas être transféré hors d’un finally
bloc (ou fault
) sauf par l’utilisation d’une throw
instruction ou l’exécution de l’instruction endfinally
(ou endfault
). En particulier, vous ne pouvez pas « tomber » d’un finally
bloc (ou fault
) ou exécuter une Ret instruction ou Leave au sein d’un finally
bloc (ou fault
).
Notez que les endfault
instructions et endfinally
sont des alias : ils correspondent au même opcode.
La surcharge de méthode suivante Emit peut utiliser l’opcode endfinally
(endfault
), ainsi que la ILGenerator
méthode EndExceptionBlock.