我如何捕捉和处理`_com_error`?

时间:2013-10-03 17:52:32

标签: c++ exception visual-c++ com

我目前有代码,例如

IAcctMaintPtr acct(__uuidof(AcctMaint));
acct->GetAccountList(q);

现在这段代码需要外部应用程序运行,否则在第一个语句后我得到一个异常陈述

  

myapp.exe中0x7739c41f(KernelBase.dll)的未处理异常:Microsoft C ++异常:内存位置为0x003ccefc的_com_error ..

我尝试catch( const std::exception& )但这似乎不起作用 - 异常没有被抓住。

有关如何捕获此异常的任何建议吗?

1 个答案:

答案 0 :(得分:4)

_com_error并非来自std::exception,但您可以明确地抓住它:

try {
    IAcctMaintPtr acct(__uuidof(AcctMaint));
    acct->GetAccountList(q);
} catch (_com_error& x) {
    // Handle error in 'x'...
}