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

UptoLike

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

исключение, которое не перехватывается этими блоками). Код такого примера
void CExceptionsView::OnExceptionsFailedcatch()
{
C->GetTextExtent( "A", 1 );
t vSize = cSize.cy, iLine =0, *p = 0x00000000;
;
го предшествующего текста
xt = "Starting process";
C->TextOut( 10, vSize*iLine++, csText );
try
{
sText = "About to cause exception ...";
екорректно, то кроме
вывода текста она также отображает модальное диалоговое окно сообщения,
содержащее соответствующее рис. 6.3).
Рис. 6
преду
MessageBox( "WARNING!\r\nThis exception may require a reboot\r\n"
"for full recovery!" );
catch( асс CException не может перехватить
{ ошибки доступа к памяти
практически идентичен приведенному выше.
CDC *pDC = GetDC() ;
CSize cSize = pD
in
CString csText
Invalidate () ;
OnPaint(); // удаление все
csTe
pD
csText = "In try block";
pDC->TextOut( 50, vSize*iLine++, csText );
c
pDC->TextOut( 90, vSize*iLine++, csText );
Поскольку эта процедура точно будет выполнена н
предупреждение (
.3. Окно-предупреждение, генерируемое модулем Failed Catch
Ниже представлен исходный код, позволяющий выводить данное
преждение.
*p = 999;
}
CException *e ) // кл
//код
TCHAR szCause[255];
49
исключение, которое не перехватывается этими блоками). Код такого примера
практически идентичен приведенному выше.

void CExceptionsView::OnExceptionsFailedcatch()
{
      CDC *pDC = GetDC() ;
      CSize cSize = pDC->GetTextExtent( "A", 1 );
      int vSize = cSize.cy, iLine =0, *p = 0x00000000;
      CString csText;

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

     Поскольку эта процедура точно будет выполнена некорректно, то кроме
вывода текста она также отображает модальное диалоговое окно сообщения,
содержащее соответствующее предупреждение (рис. 6.3).




Рис. 6.3. Окно-предупреждение, генерируемое модулем Failed Catch

     Ниже представлен исходный код, позволяющий выводить данное
предупреждение.
      MessageBox( "WARNING!\r\nThis exception may require a reboot\r\n"
                        "for full recovery!" );
             *p = 999;
      }
      catch( CException *e )       // класс CException не может перехватить
      {                            //код ошибки доступа к памяти
             TCHAR szCause[255];

                                        49