OpCodes.Endfinally Campo
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Transfere o controle da cláusula fault
ou finally
de um bloco de exceção de volta para o manipulador de exceção da CLI (Common Language Infrastructure).
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
Valor do campo
Comentários
A tabela a seguir lista o formato de assembly hexadecimal e MSIL (Microsoft Intermediate Language) da instrução, juntamente com um breve resumo de referência:
Formatar | Formato de assembly | Descrição |
---|---|---|
DC | Endfinally Endfault |
Encerra a finally cláusula ou fault de um bloco de exceção. |
Não há comportamentos de transição de pilha para esta instrução.
Endfinally
e endfault
sinalizam o final da cláusula ou fault
para que o finally
desenrolamento da pilha possa continuar até que o manipulador de exceção seja invocado. A endfinally
instrução ou endfault
transfere o controle de volta para o mecanismo de exceção da CLI. Em seguida, o mecanismo pesquisa a próxima finally
cláusula na cadeia se o bloco protegido foi encerrado com uma instrução de licença. Se o bloco protegido tiver sido encerrado com uma exceção, a CLI procurará o próximo finally
ou fault
ou inserirá o manipulador de exceção escolhido durante a primeira passagem de tratamento de exceção.
Uma endfinally
instrução só pode aparecer lexicalmente dentro de um finally
bloco. Ao contrário da endfilter
instrução , não há nenhum requisito de que o bloco termine com uma instrução endfinally
e pode haver tantas endfinally
instruções dentro do bloco quanto necessário. Essas mesmas restrições se aplicam à endfault
instrução e ao fault
bloco .
O controle não pode ser transferido para um finally
bloco (ou fault
), exceto por meio do mecanismo de exceção. O controle não pode ser transferido de um finally
bloco (ou fault
), exceto pelo uso de uma throw
instrução ou pela execução da endfinally
instrução (ou endfault
). Em particular, você não pode "sair" de um finally
bloco (ou fault
) ou executar uma Ret instrução ou Leave dentro de um finally
bloco (ou fault
).
Observe que as endfault
instruções e endfinally
são aliases – elas correspondem ao mesmo opcode.
Emit A sobrecarga do método a seguir pode usar o endfinally
opcode (endfault
), bem como o ILGenerator
método EndExceptionBlock.