MSXML: Как программно получить текст ошибки для неудачных преобразований? - PullRequest
3 голосов
/ 06 марта 2009

XMLNotepad предоставляет следующий текст (например) при сбое преобразования:

Ошибка преобразования XML
Переменная или параметр 'насыщенный фоновый цвет' был дублируется с тем же импортом старшинство.

Как мне получить программный текст об ошибке? Мой код выглядит так:

CComPtr<IXSLTemplate> tmpl;
HRESULT hr = CoCreateInstance(CLSID_XSLTemplate, NULL, CLSCTX_INPROC_SERVER, IID_IXSLTemplate, (void**)&tmpl);
if (SUCCEEDED(hr)) {
    hr = tmpl->putref_stylesheet(xslt_doc);
    if (SUCCEEDED(hr)) {
    // Huzzah; do stuff.
    } else {
    // How do I get the error text?  I want to log it!
    }
}

1 Ответ

3 голосов
/ 06 марта 2009

Если IXSLTemplate поддерживает IErrorInfo (AFAIK, он делает), то вы можете запросить это для получения дополнительной информации.

(Джеффамафон подсказал мне, как это сделать - используя GetErrorInfo() API:)

CComPtr<IErrorInfo> error;
if (SUCCEEDED( GetErrorInfo(0, &error) ) && error)
{
   // call IErrorInfo::GetDescription(), etc.
}
...