Структурная обработка исключений (C++)

Поддержка Windows 95, Windows 98 и Windows 2000 (в прошлом Windows NT) надежный подход к обработке, вызываемые исключения, структурной обработкой ошибок, включая сотрудничество операционной системы, но также имеет непосредственную поддержку в языке программирования.

Грамматика

попытк-за исключением-выписка .

__try* составной оператор*

__except*( Выражение ) составной оператор*

Заметки

Событие исключение, которое произошло неожиданно или нарушает способность процесса продолжать нормально.Исключения могут быть обнаружены как оборудования, так и программным обеспечением.Аппаратные исключения включают деление на ноль и переполнения числового типа.Разрешение программного обеспечения, включают эти вы обнаружите и сигнализируют в системе путем вызова RaiseException функция и особые ситуации, обнаруженные окнами.

Можно написать более надежный код со структурной обработкой ошибок.Можно убедиться, что ресурсы, такие как блоки памяти и файлы, правильно закрыть в случае непредвиденного завершения.Можно также обрабатывать конкретных проблем, например недостаток памяти со сжатым структурированным кодом, не полагается on goto выписки или разработанное тестирование кодов возврата.

try-except и попытка-окончательн выписки расширения Майкрософт для языков c - язык, который позволяет приложениям на регулирование коэффициента усиления событий после операции программы, которые обычно завершитьTfи мере выполнения.

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

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

2 Структурированных механизма обработки ошибок:

Эти 2 типа обработчиков указаны, но они тесно связаны через процесс очистки стека с именем "". При возникновении исключения окна поиск последнего установленный обработчик исключений, который в настоящий момент активен.Обработчик может выполнить одно из действий: 3

  • Передайте элемент управления с другими обработчиками (неудача для распознавания исключение).

  • Распознавание но закрыть исключение.

  • Распознавание и обрабатывайте исключение.

Обработчик исключений распознает исключение, который не может находиться в функции, выполнившей, когда произошло исключение.В некоторых случаях он может находиться в функции гораздо выше в стеке.Завершенны выполняющийся в данный момент функции, а также все функции на кадре стека.Во время этого процесса "размотан" стек: локальные переменные завершенных функций, если они не будут Статическийудалите из стека.

По мере их очистки стека, операционная система вызывает все обработчики завершения был написан для каждой функции.Использование обработчика завершения дает возможность очистить ресурсы, в противном случае остали бы открытым должным анормалному к прекращению.Если введенный критическую секцию, можно оставить в обработчике завершения.Если программа будет отключена, можно выполнить другие задачи домоустройства как заключение и удалять временные файлы.

При наличии модуль, c#, использующих структурную обработку исключений, их можно ограниченным образом объединить с модулями C++, которые используют обработку исключений C++.См. Различия в обработке ошибок.

Дополнительные сведения см. в следующих разделах.

См. также

Ссылки

Обработка ошибок в Visual C++

Ключевые слова C++