[英]How can I get more details about errors generated during protobuf parsing? (C++)
[英]COM: how to get more details about COM errors?
映入眼帘,
使用DirectX时,你会得到一个名为DxErr9.h的#include这个很棒的标题,它有很多有用的函数,如:
DXGetErrorString9
和
DXGetErrorDescription9
他们会告诉您关于HR给出的错误所需要知道的一切。
但是现在使用COM和OLE,我发现自己对COM函数返回的HRESULTS有点自负。 在这一点上真的只是我和MSDN,还是在OLE DB中有类似的帮助函数,我还没有遇到过?
此外,您应该查看错误信息 。 COM系统的一部分是错误信息的概念,它是一个每线程的全局,可以在不同的时间设置和清除 。 您在响应错误时查询它 ,如果设置了错误,它将比仅查看HRESULT
有更多有用的信息。
HRESULT hr=something();
if (FAILED(hr))
{
CComPtr<IErrorInfo> err;
::GetErrorInfo(0, &err);
if (err)
{
CComBSTR description;
err->GetDescription(&description);
// description will be a more descriptive error message than just formatting the
// HRESULT because it is set by the COM server code at the point of the error
}
}
使用_com_error获取有意义的字符串:
#include <comdef.h>
HRESULT hr = SomeComFunc();
if ( FAILED(hr) )
{
_com_error err(hr);
LPTCSTR szErrMsg = err.ErrorMessage();
// log szErrMsg or whatever
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.