Содержание
- 2. 7.1 Механизм исключений С++ В С и С++ используются разные стандарты обработки исключений. Генерация исключений: throw
- 3. Перехват и обработка исключений try { } catch ( ){ } При этом: 1) исключение типа
- 4. Возобновление исключения Если перехваченное исключение не может быть обработано, то оно возобновляется. Пример: class E{}; //
- 5. Доступ к аргументам исключения Использование имени переменной в качестве параметра оператора catch позволяет операторам обработки получить
- 6. Последовательность обработки исключения при генерации исключения происходит конструирование временного объекта исключения; выполняется поиск обработчика исключения; при
- 7. Обработка объекта исключения (Ex7_1) #include "stdafx.h" #include class MyException { protected: int nError; public: MyException(int nErr)
- 8. Спецификация исключений При объявлении функции можно указать, какие исключения она может генерировать: throw( , …). Пример:
- 9. Уничтожение локальных переменных при обработке исключения (Ex7_2) #include "stdafx.h" #include void MyFunc( void ); class CTest
- 10. Уничтожение локальных переменных при обработке исключения (2) void MyFunc() {CDtorDemo D; cout throw CTest(); } int
- 11. Результат In main. In try block, calling MyFunc(). Constructing CDtorDemo. In MyFunc(). Throwing CTest exception. Destructing
- 12. Обработка непредусмотренных исключений Для определения функции обработки непредусморенных исключений в программе используется функция set_unexpected: void my_unexpected()
- 13. Завершающая обработка (Ex7_3) #include "stdafx.h" #include // For function prototypes #include #include void term_func() { cout
- 14. 7.2 Механизм структурного управления исключениями С Для перехвата исключения в языке С используется конструкция: _ _try
- 15. Получение информации об исключении Для получения информации об исключении используют: _exception_code – возвращает код исключения. _exception_info
- 16. Получение информации об исключении (2) Существует ограничение на вызов этих функций: они могут вызываться только непосредственно
- 17. Обработка аппаратных и программных исключений Windows (Ex7_4) #include "stdafx.h" #include #include void main() { int* p
- 18. Генерация исключений в С Для генерации исключения используется функция void RaiseException(DWORD , DWORD , DWORD ,
- 19. Завершающая обработка Структурное управление исключениями поддерживает также завершающую конструкцию, которая выполняется независимо от того, было ли
- 20. Совместное использование обычной и завершающей обработки исключений (Ex7_5) #include "stdafx.h" #include "stdio.h" void main() { int*
- 21. 7.3 Совместное использование различных механизмов обработки исключений 1) исключения Win32 можно обрабатывать только try…_ _except (C++)
- 22. Пример совместного использования механизмов исключения (Ex7_6) #include "stdafx.h" #include #include class MyException // класс исключения {
- 23. Пример совместного использования механизмов исключения (2) void f() {int *p=NULL; _ _try { *p=3;} _ _except(1){throw(MyException("Wrong
- 24. Обработка структурных исключений как исключений С++ Для преобразования структурных исключений в исключения С++ можно использовать функцию
- 25. Трансляция структурных исключений (Ex7_7) #include "stdafx.h" #include #include #include class SE_Exception // класс для обработки структурных
- 27. Скачать презентацию