Содержание
- 2. Исключительные ситуации При работе программ возникают т.н. исключительные ситуации, когда дальнейшее нормальное выполнение приложения становится невозможным.
- 3. Классификация исключительных ситуаций В системе программирования Visual Studio 2008 (2010, 2013) различают два типа исключений: исключения
- 4. Режимы компиляции для работы с исключительными ситуациями Для того чтобы обеспечить перехват исключений C++, необходимо включить
- 5. Переключение режимов компиляции для перехвата исключений
- 6. Инструкции С++ для работы с исключительными ситуациями Язык C++ включает следующие возможности для работы с исключениями:
- 7. Защищённый блок Простейший формат защищенного блока имеет вид try {операторы_защищенного_блока} catch(...) {обработчик_исключительной_ситуации} Многоточие является частью синтаксиса
- 8. Механизм работы защищённого блока Выполняются инструкции, входящие в состав блока try (защищенный блок). Если при их
- 9. Пример выброса исключения (системные исключения) int x = 0; try { cout // Последующие операторы выполняться
- 10. Возбуждение собственных исключений Для возбуждения собственных исключений используется оператор throw выражение Тип выражения, указанного в операторе
- 11. Полный формат защищённого блока try {операторы_защищенного_блока} catch-блоки Catch-блок имеет один из следующих форматов: catch (тип) {обработчик_исключения}
- 12. Пример выброса исключения (собственные исключения) try { … throw 0; //Здесь произойдет выброс исключения // Последующие
- 13. Пример выброса исключения (собственные исключения) try { … throw 0; //Здесь произойдет выброс исключения // Последующие
- 14. Пример выброса исключения (собственные исключения) try { … throw 0; //Здесь произойдет выброс исключения // Последующие
- 15. Последовательность действий при обработке исключений Создается статическая переменная со значением, заданным в операторе throw. Она будет
- 16. Последовательность действий при обработке исключений (продолжение) Поиск catch-блоков ведется по следующим критериям: тип, указанный в catch-блоке,
- 17. Последовательность действий при обработке исключений (продолжение) Если ни один из catch-блоков, указанных после защищенного блока, не
- 18. Работающие обработчики исключений (пример 1) try { … try { … throw ”Error!”; … } //внутренний
- 19. Работающие обработчики исключений (пример 2) try { … try { … throw ”Error!”; … } //внутренний
- 20. Работающие обработчики исключений (пример 3) try { … try { … throw ”Error!”; … } //внутренний
- 21. Работающие обработчики исключений (пример 4) try { … try { … throw ”Error!”; … } //внутренний
- 22. Работающие обработчики исключений (пример 5) try { … try { … throw ”Error!”; … } //внутренний
- 23. Необработанное исключение Если оператор throw был вызван вне защищенного блока (что чаще всего случается, когда исключение
- 24. Собственная функция аварийного завершения Можно зарегистрировать с помощью функции set_terminate свою функцию, которая будет выполняться перед
- 25. Тонкая обработка системных исключений Режим компиляции /EHa позволяет перехватывать и обрабатывать системные исключения, возникающие в процессе
- 26. Трансляция исключений Транслятор исключений – пользовательская callback-функция, прототип которой имеет вид void MyTranslator(unsigned err_code, _EXCEPTION_POINTERS *p);
- 27. Трансляция исключений (продолжение) Написанный транслятор необходимо зарегистрировать вызовом функции _set_se_translator(MyTranslator); После этого транслятор получает управление при
- 28. Преобразование системных исключений в пользовательские void MyTranslator(unsigned err_code, _EXCEPTION_POINTERS *p) { throw err_code; } Теперь в
- 30. Скачать презентацию