Поделиться через


Проверка ошибок в C++

В C++каждый метод служб сертификатов напрямую возвращает значение HRESULT, указывающее, выполнен ли вызов метода успешно или завершился сбоем. Если вызов завершился сбоем, возвращаемое значение указывает, почему он завершился ошибкой.

В следующем примере показано, как возвращаемые значения HRES ULT можно использовать для проверки ошибок. Примеры кодов ошибок см. в разделе Common HRESULT Values.

HRESULT hr;
BSTR strAttributeName;
BSTR strAttributeValue = NULL;

if(!(strAttributeName = SysAllocString(L"TheAttribute")))
{
     printf("Could not allocate memory for attribute name.\n");
     exit(1);
}

hr = pICertServerPolicy->GetRequestAttribute(
                                strAttributeName,
                                &strAttributeValue);
if(S_OK != hr)          // Check to determine whether method failed
{
    if (E_INVALIDARG == hr)
    {
        //... Do something to recover from errors and so on.
    }
}
// Free BSTRs when finished.
if (NULL != strAttributeName)
    SysFreeString(strAttributeName);
if (NULL != strAttributeValue)
    SysFreeString(strAttributeValue);