_RecordsetPtr pRecordsetPtr;
pRecordsetPtr.CreateInstance(__uuidof(Recordset));
try
{
CString strSQL = "SELECT * FROM ABC";
pRecordsetPtr->Open(strSQL.GetBuffer(), theApp.m_ConnectionPtr.GetInterfacePtr(),
adOpenDynamic,
adLockOptimistic,
adCmdText);
}
catch (_com_error e)
{
MessageBox(e.ErrorMessage(), "提示信息");
}实际上abc这个表并不存在,那么应该如何捕获这个异常?

解决方案 »

  1.   

    在StdAfx.h中加入下面的语句,很好用
    #if !defined CATCH_ERROR
    #define CATCH_ERROR \
    { \
    CString strComError; \
    strComError.Format("错误编号: %08lx\n错误信息: %s\n错误源: %s\n错误描述: %s", \
    e.Error(),                  \
    e.ErrorMessage(),           \
    (LPCSTR) e.Source(),        \
    (LPCSTR) e.Description());  \
    ::MessageBox(NULL,strComError,"错误",MB_ICONEXCLAMATION); \
    }
    #endif
      

  2.   

    好像也不行,弹出一个Runtime Error的对话框,关闭对话框,程序就退出运行了
      

  3.   

    try
    {
    ……
    }
    catch(_com_error e)///捕捉异常
    {
    CATCH_ERROR;
    return false;
    }