Поделиться через


OpCodes.Endfinally Поле

Определение

Передает управление из предложения fault или finally блока исключения обратно обработчику исключений 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 

Значение поля

Комментарии

В следующей таблице приведен шестнадцатеричный формат инструкции и формат сборки MSIL, а также краткая справочная сводка:

Формат Формат сборки Описание
DC endfinally

endfault
finally Завершает предложение или fault блока исключений.

Для этой инструкции нет поведения перехода стека.

Endfinally и endfault сигнализирует о конце finally предложения или fault , чтобы очистка стека продолжалась до вызова обработчика исключений. Инструкция endfinally или endfault передает управление обратно механизму исключений CLI. Затем механизм выполняет поиск следующего finally предложения в цепочке, если защищенный блок был завершен с помощью инструкции по выходу. Если защищенный блок был завершен с исключением, CLI выполнит поиск следующего finally или faultили введет обработчик исключений, выбранный во время первого прохода обработки исключений.

Инструкция endfinally может лексически отображаться только в блоке finally . В отличие от инструкции endfilter , нет необходимости заканчивать блок инструкцией endfinally , и в блоке может быть столько endfinally инструкций, сколько требуется. Эти же ограничения применяются к инструкции endfault и блоку fault .

Управление не может быть передано в finally блок (или fault), кроме как с помощью механизма исключения. Управление не может быть передано из finally блока (или fault), за исключением использования инструкции throw или выполнения инструкции endfinally (или endfault). В частности, нельзя "выпадать" из finally блока (или fault) или выполнить Ret инструкцию или Leave в блоке finally (или fault).

Обратите внимание, что инструкции endfault и endfinally являются псевдонимами— они соответствуют одному и тому же коду операции.

Emit Следующая перегрузка endfinally метода может использовать код операции (endfault), а также ILGenerator метод EndExceptionBlock.

Применяется к