есть такой кусок кода Код (Text): dataSize=CertGetNameString( certContext, CERT_NAME_SIMPLE_DISPLAY_TYPE, 0, NULL, NULL, 0); tmpString = (char*)malloc(dataSize); CertGetNameString( certContext, CERT_NAME_SIMPLE_DISPLAY_TYPE, 0, NULL, tmpString, dataSize); иногда возникает ошибка AccessViolation как можно с помощью try catch отслеживать появление этой ошибки?
Возникает C++'ное исключение? Тогда общая структура обработки: Код (Text): try { ... your code } catch( OneExceptionType e ) { ... exception handling ... } catch( AnotherExceptionType e ) { ... exception handling .... } catch( ... ) { ... all other exceptions ... } Обязателен только первый блок catch(){}
А что мешает заглянуть в справку к языку и посмотреть эти самые try catch? Дело нескольких секунд, а на форуме ответили больше, чем через час.
ДА проблема была в том что когда компилировал ничего не изменилось появлялась виндовая ошибка, а когда попробовал запустить откомпилированный проект все заработало как надо.
slow Не верно. Keva Сделай проверку на dataSize: if(dataSize > 1) { tmpString = (char*)malloc(dataSize); ... } А для win32 исключений лучше использовать __try..__except.
хм.. а ну я не читал первый пост как обычно) тока название темы)) если хчоется ловить access violation, тогда Код (Text): __try { ... code ... } __except( EXCEPTION_EXECUTE_HANDLER ) { .... exception handling .... } Можно еще __finally добавить. Другой вариант - SetUnhandledExceptionFilter( )
Keva читайте Рихтера "Создание эффективных WIN32-приложений с учетом специфики 64-разрядной версии Windows" про обработку исключений больше чем у него пожалуй ни у кого не написано
IceStudent Рихтер описывает микрософтовский SEH и С++ исключения, не вдаваясь в низкоуровневые ассемблерные дебри
Так я о том же - если "как сделать", то Рихтера читать. Если "а что там внутри", то Гордона (если не ошибаюсь).