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

UptoLike

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

csText += szCause;
pDC->TextOut( 90, vSize*iLine++, csText );
вается классом CResourceException,
который передает сообщение о недоступности запрашиваемого ресурса "A
required reso
довать после
их блоков,
{ д ошибки
n cause: ";
szCause;
);
}
catch !!!.
{
pDC->TextOut( 90, vSize*iLine++, csText );
throw; // передает исключение внешнему блоку catch
}
ис. 6.4. Окно, содержащее сообщения, которые возникают в процессе
ь т
оператор throw, а обработчик CResourceException - нет. Поскольку исключение
}
В этом блоке исключение перехваты
urce was unavailable" (рис. 6.4).
catch( CException *e )// данный блок должен сле
// предыдущ
// иначе компилятор выдаст ко
TCHAR szCause[255];
csText = "CExceptio
e->GetErrorMessage( szCause, 255 );
csText +=
pDC->TextOut( 90, vSize*iLine++, csText
(...) // перехват всех исключений
csText = "In inner catch all block: ";
pDC->TextOut( 90, vSize*iLine++, csText );
csText = "Throwing exception to outer catch block: ";
Р
порождения исключения, связанного с ресурсом
Следует обратит внимание на то факт, что блок catch(. ..) содержит
52
                csText += szCause;
                pDC->TextOut( 90, vSize*iLine++, csText );
           }

      В этом блоке исключение перехватывается классом CResourceException,
который передает сообщение о недоступности запрашиваемого ресурса "A
required resource was unavailable" (рис. 6.4).

           catch( CException *e )// данный блок должен следовать после
                                // предыдущих блоков,
           {      // иначе компилятор выдаст код ошибки
                   TCHAR szCause[255];
                   csText = "CException cause: ";
                   e->GetErrorMessage( szCause, 255 );
                   csText += szCause;
                   pDC->TextOut( 90, vSize*iLine++, csText );
             }
             catch(...)    // перехват всех исключений!!!.
             {
                   csText = "In inner catch all block: ";
                   pDC->TextOut( 90, vSize*iLine++, csText );
                   csText = "Throwing exception to outer catch block: ";
                   pDC->TextOut( 90, vSize*iLine++, csText );
                   throw; // передает исключение внешнему блоку catch
            }




     Рис. 6.4. Окно, содержащее сообщения, которые возникают в процессе
               порождения исключения, связанного с ресурсом

     Следует обратить внимание на тот факт, что блок catch(. ..) содержит
оператор throw, а обработчик CResourceException - нет. Поскольку исключение

                                      52