【发布时间】:2018-05-20 21:36:26
【问题描述】:
这是how to throw普通的Win32错误正确,自动检索错误描述,效果非常好:
if (!SomeWinFunc()) {
throw std::system_error(GetLastError(),
std::system_category(),
"SomeWinFunc crashed badly");
}
但是,我不确定如何处理 COM 错误,检查 idiomatically 如下:
HRESULT hr = comObj->SomeFunc();
if (FAILED(hr)) {
throw std::system_error(hr, // <-- is it correct here?
std::system_category(),
"SomeFunc crashed right now");
}
将HRESULT 传递给system_error 是否正确,或者还有其他方法可以从COM 函数中引发异常?
【问题讨论】:
-
你有什么收获吗?
-
@MichaelGunter,我仍然没有实现 100% 正确的解决方案(可能从您的代码开始),但由于我的需求只是处理系统 COM 对象,所以我在问题中写的方法只是工作,我跑了几个测试。我计划一有时间就深入研究。
标签: c++ winapi exception com throw