Måste jag fånga _com_error när jag anropar metoder i ett COM objekt?COM och _com_error
COM objektet i sig genererar inga undantag utan använder sig av returkoder.
Tag följande exempel:
En av metoderna jag anropar är "int InitServer()". Om man ser på den automatgenererade "proxy" koden så ser den ut så här:
inline int IApplication::InitServer ( ) {
int _result = 0;
HRESULT _hr = raw_InitServer(&_result);
if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
return _result;
}
Som jag ser det så kan denna funktion generera ett undantag om funktionen raw_InitServer returnerar fel. Är returkoden från raw_InitServer något som kommer från COM objektet eller från windows?
dvs kan man skriva COM objektet på ett sådant sätt att _com_error aldrig genereras?
Blir ju lite bökigt om man både måste kolla returkoden och fånga _com_error för varje anrop.