Отладка приложений


Комбинирование обработки SEH- и С++-исключений - часть 4


Пример, в котором синхронные исключения не работают

// Компилировать как выпуск (версию) Win32, используя ключ /GX,

// чтобы убедиться, что функция-транслятор не будет вызываться.

// (Ключ /GX отображается в /EHsc.) Чтобы заставить эту программу

// работать в финальных построениях, компилируйте ее с ключом /ЕНа.

#include "stdafx.h" 

class CSEHError 

{

 public :

CSEHError ( void) 

{

m_uiErrCode = 0; 

}

CSEHError ( unsigned int u) 

{

m_uiErrCode = u; 

}

~CSEHError ( void) 

}

unsigned int m_uiErrCode; 

};

void TransFunc ( unsigned int u, EXCEPTION_POINTERS * pEP) 

{

printf ( "In TransFuncXn"); 

throw CSEHError ( u); 

}

void GrungyFunc ( char * p) 

{.

*P = 'p';

printf ( "This output should never be seen!\n"); 

}

void DoBadThings ( void)

 {

try 

{

GrungyFunc ( (char*)0xl); 

}

catch ( CSEHError e) 

{

printf ( "Got an exception! -> Ox%08X\n", e.m_uiErrCode);

}

int main ( int argc, char* argv[]) 

{

_set_se_translator ( TransFunc);

DoBadThings ();

return 0; 

}

 




Начало  Назад  Вперед



Книжный магазин