錯誤報告為 HRESULT 值
HRESULT 是數字 32 位值,其中位或位範圍編碼定義良好的資訊。MSB 是失敗/成功標誌,其餘位儲存附加資訊。可以使用 FAILED 或 SUCCEEDED 巨集來確定失敗或成功。HRESULT
s 通常與 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).
...
}
}