Borland C ++ Builder提供函数OleCheck(HRESULT Result);
。它在文档中的描述如下:
OleCheck用于包装许多COM例程,因此如果该例程失败,用户将有机会在引发的异常中处理它。
如果ECode值小于零,则OleCheck会引发EOleSysError异常,指定错误代码。
如果函数返回失败的状态值,使用Microsoft ATL抛出异常的推荐函数或习惯用法是什么?我想避免在这样的代码中混合使用Borland和Microsoft库:
CComPtr<Outlook::Explorers> spExplorers;
OleCheck(m_spApp->get_Explorers(&spExplorers));
答案 0 :(得分:2)
在ATL中没有这样的准备。最接近的是AtlThrow()
,它会抛出一个异常(无条件),但检查仍由你自己决定 - 你可以看一下ATL本身如何使用AtlThrow()
。
所以IMO最好的办法就是制作你自己的功能 - 它会接受HRESULT
并调用AtlThrow()
或其他一些异常翻译构造的HRESULT
s evalate to {{1通过false
宏。