如果程序中使用了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());
csMsg += szTemp;
wsprintf(szTemp, _T("Source = %s\n"), bstrSource.length() ? (LPCTSTR)bstrSource : _T("null"));
csMsg += szTemp;
wsprintf(szTemp, _T("Description = %s\n"), bstrDescription.length() ? (LPCTSTR)bstrDescription : _T("null"));
csMsg += szTemp;
AfxMessageBox(csMsg);
{
_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());
csMsg += szTemp;
wsprintf(szTemp, _T("Source = %s\n"), bstrSource.length() ? (LPCTSTR)bstrSource : _T("null"));
csMsg += szTemp;
wsprintf(szTemp, _T("Description = %s\n"), bstrDescription.length() ? (LPCTSTR)bstrDescription : _T("null"));
csMsg += szTemp;
AfxMessageBox(csMsg);
}