PDA

Просмотр полной версии : Visual Basic и SetErrorInfo



Sipulcator
07.04.2005, 05:55
Как обработать ошибку в VisualBasic, сгенерированую COM-сервером с помощью SetErrorInfo?

Sipulcator
30.04.2005, 04:41
Блин, что за форум такой, сам задал вопрос, сам ответил.
Короче если кому интересно, так сказать для аналов:


Исключение в COM сервере генерируется так:

ICreateErrorInfo *pICreateErr;
HRESULT hr = CreateErrorInfo(&pICreateErr);
if (FAILED(hr))
{
return E_FAIL;
}
pICreateErr->SetSource(L"My shit");
pICreateErr->SetDescription(L"Washed off");
// Сюда всё остальное, что захочется
IErrorInfo *pIErrorInfo = NULL;
hr = pICreateErr->QueryInterface(IID_IErrorInfo, (void **) &pIErrorInfo);
if (SUCCEEDED(hr))
{
SetErrorInfo(0L, pIErrorInfo);
pIErrorInfo->Release();
}
pICreateErr->Release();
return E_FAIL;

Обязательно надо возвращать E_FAIL, иначе VB на исключение забивает.
Дальше в VB обрабатывать это исключение стандартным образом.

on Error goto err // как-то так

// программа
Exit Sub
err:
// Действия при сбое
End Sub