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

UptoLike

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

функции Invalidate и OnPaint, посредством которых удаляется текст,
оставш дыдущих примеров.
есь предшествующий текст
xt = "Starting process";
C->TextOut( 10, vSize *iLine++, csText );
try
{
pDC->TextOut( 50, vSize*iLine++, csText );
ока текста не будет отображаться в окне
программы (см. рис. 3.1). Выполнение программы возобновится в блоке catch,
где имеется
ecution has passed "
"to the catch block";
catch ( ехватывать все исключения!!!
{
csText = "In catch all block";
ize*iLine++, csText );
csText = "End of process";
pDC->TextOut( 10, vSize*iLine++, csText );
ийся от пре
Invalidated;
OnPaint (); // удаляют в
csTe
pD
csText = "In try block";
pDC->TextOut( 50, v3ize*iLine++, csText );
csText = "About to cause exception";
ForceException (); // показана ранее
Несмотря на то, что исключение происходит в отдельной процедуре,
выполнение блока try приостанавливается и управление передается блоку catch
(...). Поэтому следующая стр
другое сообщение.
csText = "This line will not display because ex
pDC->TextOut( 50, vSize*iLine++, csText );
}
...) // пер
pDC->TextOut( 50, vS
}
}
3. Рассмотреть механизм обработчика вложенного исключения.
Второй
пример демонстрирует использование вложенных исключений путем
размещения одного блока try/catch внутри другого, внешнего блока. Кроме
того, внутренний блок содержит набор команд catch, которые оперируют
различными классами, производными от CException. Наконец, оператор throw
о внутреннем блоке catch передает перехваченное исключение внешнему
void CExceptionsView::OnExceptibnsNestedhandlers()
{
в
блоку catch.
44
функции Invalidate и OnPaint, посредством которых удаляется текст,
оставшийся от предыдущих примеров.

     Invalidated;
     OnPaint ();                       // удаляют весь предшествующий текст
     csText = "Starting process";
     pDC->TextOut( 10, vSize *iLine++, csText );
     try
     {
           csText = "In try block";
           pDC->TextOut( 50, v3ize*iLine++, csText );
           csText = "About to cause exception";
           pDC->TextOut( 50, vSize*iLine++, csText );
           ForceException ();       // показана ранее
       Несмотря на то, что исключение происходит в отдельной процедуре,
выполнение блока try приостанавливается и управление передается блоку catch
(...). Поэтому следующая строка текста не будет отображаться в окне
программы (см. рис. 3.1). Выполнение программы возобновится в блоке catch,
где имеется другое сообщение.

           csText = "This line will not display because execution has passed "
                 "to the catch block";
           pDC->TextOut( 50, vSize*iLine++, csText );
     }
     catch (...)                      // перехватывать все исключения!!!
     {
            csText = "In catch all block";
            pDC->TextOut( 50, vSize*iLine++, csText );
     }
     csText = "End of process";
     pDC->TextOut( 10, vSize*iLine++, csText );
}

      3. Рассмотреть механизм обработчика вложенного исключения. Второй
пример демонстрирует использование вложенных исключений путем
размещения одного блока try/catch внутри другого, внешнего блока. Кроме
того, внутренний блок содержит набор команд catch, которые оперируют
различными классами, производными от CException. Наконец, оператор throw
во внутреннем блоке catch передает перехваченное исключение внешнему
блоку catch.

void CExceptionsView::OnExceptibnsNestedhandlers()
{

                                       44