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.