天天看点

com error 的捕获。

如果程序中使用了com,为了程序的健壮性com中的异常就需要捕获了。

一般格式如下:

try

{

}

catch(_com_error& ce)

 dump_com_error(ce);

catch(...)// ...是所有的异常,不知道的异常也可以捕获

AfxMessageBox(_T("发生未知异常"));

dump_com_error的函数实现如下

void dump_com_error(_com_error &e)

    _bstr_t bstrSource(e.Source());

    _bstr_t bstrDescription(e.Description());

    TCHAR szTemp[1024];

    CString csMsg = _T("发生错误!\n");

    wsprintf(szTemp, _T("Code = %08lx\n"), e.Error());

    csMsg += szTemp;

    wsprintf(szTemp, _T("Code meaning = %s\n"), e.ErrorMessage());

    wsprintf(szTemp, _T("Source = %s\n"), bstrSource.length() ? (LPCTSTR)bstrSource : _T("null"));

    wsprintf(szTemp, _T("Description = %s\n"), bstrDescription.length() ? (LPCTSTR)bstrDescription : _T("null"));

    AfxMessageBox(csMsg);

继续阅读