Операционные системы. Учебное пособие. Марапулец Ю.В. - 87 стр.

UptoLike

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

соответствующий производный класс). Однако не следует забывать, что метод COb-
ject::IsKindOf() применим только к тем классам, которые были объявлены с помощью
макрокоманды IMPLEMENT_DYNAMIC, разрешающей динамическую проверку типов.
При объявлении всех классов, производных от класса CException, также необходимо ис-
пользовать эту макрокоманду.
Для получения (подробной информации об исключении любого из классов, произ-
водных от CException, можно воспользоваться функциями GetErrorMessage() и ReportEr-
ror().
В ответ на исключение система обычно пытается сначала запустить фильтр исклю-
чений, а затем - подпрограмму-обработчик. Однако вы можете реализовать обработку
нескольких различных исключений, организовав последовательность блоков catch, как
показано в следующем фрагменте:
try
{
... // блок программы, порождающий исключение
}
catch ( CMemoryException *e ) // исключение типа нехватки памяти
{
...
}
catch ( CFileException *e ) // исключение при выполнении операции с файлом
{
...
}
catch( CArchiveException *e ) // исключение при выполнении
{ //архивации/сериализации
...
}
catch( CNotSupportedException *е )// отклик на запрос
{ // сервиса, который не поддерживается
...
}
catch( CResourceException *e ) // исключение при выделении ресурса
{
...
}
catch( CDaoException *e ) // исключение при обращении к базе данных (DАО-классы)
{
...
} catch ( CDBException *e ) // исключение при обращении к базе данных (ODBC-классы)
{
...
}
catch( COleException *e ) // OLE-исключения
{
...
}
catch ( COleDispatchException *e ) // исключение при выполнении диспетчеризации
// (OLE-автоматизации)
89
соответствующий производный класс). Однако не следует забывать, что метод COb-
ject::IsKindOf() применим только к тем классам, которые были объявлены с помощью
макрокоманды IMPLEMENT_DYNAMIC, разрешающей динамическую проверку типов.
При объявлении всех классов, производных от класса CException, также необходимо ис-
пользовать эту макрокоманду.
       Для получения (подробной информации об исключении любого из классов, произ-
водных от CException, можно воспользоваться функциями GetErrorMessage() и ReportEr-
ror().
       В ответ на исключение система обычно пытается сначала запустить фильтр исклю-
чений, а затем - подпрограмму-обработчик. Однако вы можете реализовать обработку
нескольких различных исключений, организовав последовательность блоков catch, как
показано в следующем фрагменте:

try
{
        ...                     // блок программы, порождающий исключение
}
catch ( CMemoryException *e )   // исключение типа нехватки памяти
{
        ...
}
catch ( CFileException *e )     // исключение при выполнении операции с файлом
{
        ...
}
catch( CArchiveException *e )   // исключение при выполнении
{                               //архивации/сериализации

      ...
}
catch( CNotSupportedException *е )// отклик на запрос
{                                  // сервиса, который не поддерживается
        ...
}
catch( CResourceException *e )     // исключение при выделении ресурса
{
        ...
}
catch( CDaoException *e ) // исключение при обращении к базе данных (DАО-классы)
{
        ...
} catch ( CDBException *e ) // исключение при обращении к базе данных (ODBC-классы)
{
        ...
}
catch( COleException *e )          // OLE-исключения
{
        ...
}
catch ( COleDispatchException *e ) // исключение при выполнении диспетчеризации
                                   // (OLE-автоматизации)


                                        89