Основы программирования в Win32API. Марапулец Ю.В. - 114 стр.

UptoLike

Составители: 

жете структурировать свою программу с помощью макрокоманд обработки
исключений. В этом случае необходимо начать с макрокоманды TRY,
кото-
рая устанавливает блок TRY,
отмечающий потенциально опасный фрагмент
программы.
Исключения, порожденные в блоке TRY,
обрабатываются в блоках
CATCH
и AND_CATCH. Допускается и рекурсивная обработка: исключения
могут быть переданы внешнему блоку TRY
путем их игнорирования или
в результате вызова макрокоманды THROW_LAST.
Все блоки CATCH
должны завершаться макрокомандой END_CATCH или
END_CATCH_ALL.
Если в программе нет блоков CATCH, блок TRY сам дол-
жен завершаться указанными макрокомандами.
Макрокоманды THROW
и THROW_LAST генерируют заданное исключе-
ние, прерывают выполнение программы и передают управление блоку
CATCH.
Если таковой отсутствует, управление передается модулю библиотеки
MFC, который отображает сообщение об ошибке и завершает свою работу.
Макрокоманда THROW_LAST
передает исключение назад внешнему блоку
CATCH.
MFC содержит группу классов, связанных с обработкой исключений, ко-
торые порождены от класса CException. Каждый из классов этой группы пред-
назначен для обработки определенных типов исключений (табл. 8.2).
Таблица 8.2
Класс Описание
CMemoryException Исключение, вызванное нехваткой памяти
CNotSupportedException Запрос недопустимой операции
CArchiveException Исключение при работе с архивами
CFileException Исключение при выполнении операций с файлами
CResourceException Ресурс не обнаружен или не может быть создан
COleException OLE-исключение
CDBException
Исключение, возникающее при выполнении операций
с базами данных; генерируется ODBC-классами библиотеки MFC
COleDispatchException Ошибка диспетчеризации (OLE-автоматизации)
CUserException
Исключение, связанное с невозможностью найти заданный
ресурс
CDaoException
Исключение, возникающее при работе с объектами доступа к
данным (Data Access Object, DAO); генерируется DАО-классами
библиотеки MFC
CInternetException
Исключение, связанное с работой в Internet; генерируется
Internet-классами библиотеки MFC
Эти исключения предназначены для использования в блоках try/catch
и макрокомандах TRY,
CATCH, AND__CATCH, THROW, THROW_LAST
и END_CATCH.
Обычно каждый производный класс служит для перехвата исключений
114
жете структурировать свою программу с помощью макрокоманд обработки
исключений. В этом случае необходимо начать с макрокоманды TRY, кото-
рая устанавливает блок TRY, отмечающий потенциально опасный фрагмент
программы.
     Исключения, порожденные в блоке TRY, обрабатываются в блоках
CATCH и AND_CATCH. Допускается и рекурсивная обработка: исключения
могут быть переданы внешнему блоку TRY путем их игнорирования или
в результате вызова макрокоманды THROW_LAST.
     Все блоки CATCH должны завершаться макрокомандой END_CATCH или
END_CATCH_ALL. Если в программе нет блоков CATCH, блок TRY сам дол-
жен завершаться указанными макрокомандами.
     Макрокоманды THROW и THROW_LAST генерируют заданное исключе-
ние, прерывают выполнение программы и передают управление блоку
CATCH. Если таковой отсутствует, управление передается модулю библиотеки
MFC, который отображает сообщение об ошибке и завершает свою работу.
Макрокоманда THROW_LAST передает исключение назад внешнему блоку
CATCH.
     MFC содержит группу классов, связанных с обработкой исключений, ко-
торые порождены от класса CException. Каждый из классов этой группы пред-
назначен для обработки определенных типов исключений (табл. 8.2).

                                                                            Таблица 8.2

        Класс                                        Описание
  CMemoryException            Исключение, вызванное нехваткой памяти
 CNotSupportedException       Запрос недопустимой операции
  CArchiveException           Исключение при работе с архивами
    CFileException            Исключение при выполнении операций с файлами
  CResourceException          Ресурс не обнаружен или не может быть создан
    COleException             OLE-исключение
                              Исключение, возникающее при выполнении операций
     CDBException
                          с базами данных; генерируется ODBC-классами библиотеки MFC
 COleDispatchException         Ошибка диспетчеризации (OLE-автоматизации)
                               Исключение, связанное с невозможностью найти заданный
    CUserException
                          ресурс
                               Исключение, возникающее при работе с объектами доступа к
    CDaoException         данным (Data Access Object, DAO); генерируется DАО-классами
                          библиотеки MFC
                               Исключение, связанное с работой в Internet; генерируется
   CInternetException
                          Internet-классами библиотеки MFC

    Эти исключения предназначены для использования в блоках try/catch
и макрокомандах TRY, CATCH, AND__CATCH, THROW, THROW_LAST
и END_CATCH.

    Обычно каждый производный класс служит для перехвата исключений

                                         114