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.