Re[4]: не могу поймать исключение _com_error
От: natalka  
Дата: 21.03.02 09:15
Оценка:
Здравствуйте OlegO, Вы писали:

OO>Чтобы понять, что происходит достаточно посмотреть .CPP файл, которые сгенерила студия,

OO>для твоего ActiveX.

OO>В методах идет вызов метода CWnd::InvokeHelper, а он в случае ошибки генерит

OO>исключения COleException если код ошибки равен DISP_E_EXCEPTION, или
OO>COleDispatchException в остальных случаях.

OO>для простоты можешь перехватывать все исключения catch(...)


OO>Если исключения не приходят, значит смотри код ActiveX'а


когда я по шагам смотрела, что происходит, он мне показывает, что в методе у меня появляется исключение типа COleDispatchException
В другом клиенте я получаю ошибку другим способом (этот приём везде описан):
hr = pInterface->QueryInterface(IID_ISupportErrorInfo,(void**)&pISER);
if(SUCCEEDED(hr))
{
if(SUCCEEDED(pISER->InterfaceSupportsErrorInfo(riid)))
{
IErrorInfo *pEI;
if (SUCCEEDED(GetErrorInfo(NULL,&pEI)))
{
BSTR desc;
pEI->GetDescription(&desc);
char buff[80];
WideCharToMultiByte(CP_ACP,NULL,desc,-1,buff,80,NULL,NULL);
cout << buff << endl;
SysFreeString(desc);
pEI->Release();
}
}
pISER->Release();
}
pInterface->Release();

и там все работает, но мне для простоты написания клиента нужен catch.
Сейчас у меня как раз исключение и ловиться на catch(...), но мне надо конкретно.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.