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

UptoLike

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

CDC *pDC = GetDC() ;
CSize cSize = pDC->GetTextExtent( "A", 1 );
t vSize = cSize.cy, iLine = 0;
предшествующего текста
xt = "Starting process";
C->TextOut( 50, vSize*iLine++, csText );
try
{
xt = "In outer try block";
C->TextOut ( 50, vSize*iLine++, csText );
try
{
sText = "About to cause exception ...";
vSize*iLine++, csText );
момент команда ForceException готова породить исключение и
передать его внутреннему блоку catch, предотвращая выполнение следующих
операторов.
ecution "
"has passed to the catch block";
pDC->TextOut( 50, vSize*iLine++, csText );
амяти), не относится ни к одному из этих классов. Поэтому
реаль
ераторы catch имеют практически одно и то же тело (различаются
лишь на экран строкой), поэтому достаточно рассмотреть одну
структуру:
catch( CMemoryException *e ) // нехватка памяти
{
in
CString csText;
Invalidate();
OnPaint(); // удаление всего
csTe
pD
csTe
pD
csText = "In inner try block";
pDC->TextOut( 90, vSize*iLine+.+, csText );
c
pDC->TextOut( 90,
ForceException ();
В этот
csText = "This line will not display because ex
}
Далее следует набор блоков catch, каждый из которых предназначен для
перехвата исключения, тип которого определяется классом, производным от
CException. Но тип исключения, задействованного в данном примере (ошибка
доступа к п
ный перехват не произойдет до тех пор, пока не будет найден подходящий
обработчик.
Все оп
выводимой
TCHAR szCause[255];
45
     CDC *pDC = GetDC() ;
     CSize cSize = pDC->GetTextExtent( "A", 1 );
     int vSize = cSize.cy, iLine = 0;
     CString csText;

     Invalidate();
     OnPaint();                    // удаление всего предшествующего текста
     csText = "Starting process";
     pDC->TextOut( 50, vSize*iLine++, csText );
     try
     {
           csText = "In outer try block";
           pDC->TextOut ( 50, vSize*iLine++, csText );
           try
           {
                   csText = "In inner try block";
                   pDC->TextOut( 90, vSize*iLine+.+, csText );
                   csText = "About to cause exception ...";
                   pDC->TextOut( 90, vSize*iLine++, csText );

                ForceException ();

     В этот момент команда ForceException готова породить исключение и
передать его внутреннему блоку catch, предотвращая выполнение следующих
операторов.

                csText = "This line will not display because execution "
                      "has passed to the catch block";
                pDC->TextOut( 50, vSize*iLine++, csText );
           }

     Далее следует набор блоков catch, каждый из которых предназначен для
перехвата исключения, тип которого определяется классом, производным от
CException. Но тип исключения, задействованного в данном примере (ошибка
доступа к памяти), не относится ни к одному из этих классов. Поэтому
реальный перехват не произойдет до тех пор, пока не будет найден подходящий
обработчик.
     Все операторы catch имеют практически одно и то же тело (различаются
лишь выводимой на экран строкой), поэтому достаточно рассмотреть одну
структуру:

           catch( CMemoryException *e )       // нехватка памяти
           {
                  TCHAR szCause[255];


                                      45