Я работаю с ADSI при помощи COM.
В некоторых случаях возникает ошибка:
Метод 'SetInfo' в COM-объекте класса '<неизвестно>' возвратил код ошибки 0x8007200A (<неизвестно>), который означает: <неизвестно>.
Если обработать ошибку вот таким образом:
X++:
void setInfo()
{
COMError errorCom;
;
try
{
object.SetInfo();
}
catch (Exception::Error)
{
errorCom = object.error();
if (errorCom)
throw error(strFmt("Ошибка %1 ('%2')",
errorCom.number(), WinApi::formatMessage(errorCom.number())));
else
throw Exception::Error;
}
}
Ошибка становится человеческой:
Ошибка -2147016694 ('Указанное значение или атрибут службы каталогов не существует.')
Но при этом мы обязаны знать, какой объект зашибся.
Я пробовал обработать эту штуку глобально, но вместо errorCom.number() использовать WinApi::GetLastError, но оказалось, что она возвращает 0 всегда в таки случаях.
Как сделать так, чтобы
- ошибки выглядели по человечески
- не надо было бы писать обработку для всех объектов