Visual Basic и SetErrorInfo

Вопросы по программированию, не подходящие в другие разделы.

Модераторы: Naeel Maqsudov, C_O_D_E

Ответить
Sipulcator
Сообщения: 7
Зарегистрирован: 07 апр 2005, 04:07

07 апр 2005, 05:55

Как обработать ошибку в VisualBasic, сгенерированую COM-сервером с помощью SetErrorInfo?
Sipulcator
Сообщения: 7
Зарегистрирован: 07 апр 2005, 04:07

30 апр 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
Ответить