Шаг 98 - Как используются исключения в VC и MFC

Есть два механизма исключений.

Макросы исключений считаются устаревшими, для всех новых программ рекомендуют использовать только операторы C++. Правда для того, чтобы в Вашей программе использовались исключения необходимо их разрешить в меню Project Setting в разделе C/C++ должен быть установлен флаг Enable exception handing.

step98.gif (5623 b)

Для обработки исключений MFC используется класс CException или классы поражденные от него. Для обработки исключительных ситуаций в MFC есть свои классы

CMemoryException		недостаточно памяти
CFileException			ошибка работы с файлами
CArhiveException		ошибка записи или востановления обьекта
CNotSupportedException		ошибка неизвестного устройства
CResourceException		ошибка работы с ресурсами
CDaoException			ошибка работы с базами данных
CDBException			ошибка рабюоты с базами данных
COleException			ошибка работы с обьектами OLE
COleDispatchException		ошибка работы с серверами автоматизации
CUserException			исключение с окном сообщения
К сожалению во всем этом есть неприятность. Механизмы работы исключений MFC не работают со структурированными обработчиками исключений SEH для NT. Следует отметить, что объекты MFC порождают исключения только производные от класса CException. Вот пример отлавливания исключения по нехватке памяти.
try
{
 // здесь мы эту память......
 // короче на лево и направо раздаем
}
catch(CMemoryException)
{
 // а вот здесь мы напишем
 // что будет делать потом
 // когда она закончится
}

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем.