错误报告为 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).
...
}
}