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


выписка try - окончательн (c#)

Только для систем Microsoft

try-finally выписка расширение язык c (Майкрософт), который позволяет приложениям гарантировать выполнение кода очистки, когда прерывается выполнение блока кода.Очистка состоит из таких задач, какие deallocating память, заключительные файлы, а также освобождение дескрипторы файлов.try-finally выписка особенно полезна для подпрограмм, имеющих несколько мест, где выполняется проверка для ошибки, которые могут вызвать преждевременное вернуться из подпрограммы.

  • попытк-окончательн-выписка.
    __try составной оператор

    __finally составной оператор

Составной оператор после __try предложение защищенный разделе.Составной оператор после __finally предложение обработчик завершения.Обработчик определяет набор действий, которые выполняются, когда защищенный раздел выйденн, выйденн ли защищенный раздел исключением (анормалным завершением) или стандартным упадите до конца (нормальное завершение).

Элемент управления достигает a __try выписка простым последовательным выполнением (упадите до конца).Если элемент управления вставляет __try выписка, связанный с ними модуль становится активным.выполнение продолжает следующим образом:

  1. Защищенный раздел выполнен.

  2. Обработчик завершения вызова.

  3. Когда обработчик завершения завершает выполнение продолжается после __finally выписка.Независимо от того, как защищенные окончании шага (например, через a goto выписка из защищенного текста или через a return выписка), обработчик завершения выполняется раньше, чем поток элемента управления перемещается из защищенного раздела.

__leave ключевое слово допустимо в течение a try-finally блок выписки.Эффект __leave поскакать к концу try-finally блок.Обработчик завершения немедленно выполнен.Хотя a goto выписку можно использовать для выполнения такого же результата, a goto выписка вызывает очистки стека.__leave выписка более эффективны, поскольку она не включает очистки стека.

Оставить a try-finally оператор using a return оператор or longjmp функция среды выполнения, считается анормалным нулем.Недопустимо поскакать в выражении __try выписка, но юридическая поскакать из них.Все __finally выписки, которые активны между отправным точкой и назначением должна быть завершена.Это называется "local" очистки.

Обработчик завершения не вызывается, если убит процесс при выполнении a try-finally выписка.

ПримечаниеПримечание

Структурная обработка исключений работает на основе исходных файлов c и C++.Однако она не предназначена для C++.Можно убедиться, что Код портативне с помощью обработки исключений C++.Кроме того, механизм обработки исключений C++ очень является более гибким, что он может обрабатывать исключения любого типа.

ПримечаниеПримечание

Для программ C++, обработка исключений С++ должна использоваться вместо структурированной обработки исключений.Дополнительные сведения см. в разделе обработка ошибок в Справочник по языку C++.

См. пример попытк-за исключением выписки просмотреть как try-finally выписка работает.

ЭЛЕМЕНТ, относящийся Майкрософт

См. также

Ссылки

выписка try - окончательн