錯誤報告為 HRESULT 值

HRESULT 是數字 32 位值,其中位或位範圍編碼定義良好的資訊。MSB 是失敗/成功標誌,其餘位儲存附加資訊。可以使用 FAILEDSUCCEEDED 巨集來確定失敗或成功。HRESULTs 通常與 COM 一起使用,但也出現在非 COM 實現中(例如 StringCchPrintf )。

const size_t cchBuf = 5;
wchar_t buffer[cchBuf] = { 0 };
HRESULT hr = StringCchPrintfW( buffer, cchBuf, L"%s", L"Hello, world!" );
if ( FAILED( hr ) ) {
    // Failure: Determine specific reason.
    switch ( hr ) {
    case STRSAFE_E_INSUFFICIENT_BUFFER:
        // Buffer too small; increase buffer and retry.
        ...
    case STRSAFE_E_INVALID_PARAMETER:
        // Invalid parameter; implement custom error handling (e.g. logging).
        ...
    default:
        // Some other error code; implement custom error handling (e.g. logging).
        ...
    }
}