VC2010 _com_error에서 반환된 오류 정보

3653 단어 error
 1 CString GetComError(const _com_error& e)

 2 {

 3     CString sMsg;

 4     sMsg.Format(

 5         _T("HRESULT: 0x%08lx; Error: %s"),

 6         e.Error(),

 7         e.ErrorMessage()

 8         );

 9 

10     if(e.ErrorInfo())

11     {

12         sMsg += TEXT("
Source:
") + CString((LPCTSTR)e.Source()) + 13 TEXT("; Description: ") + CString((LPCTSTR)e.Description()); 14 } 15 16 return sMsg; 17 }

위의 빨간색 부분을 주의하십시오. 데이터 형식 변환을 해야 합니다. 그렇지 않으면 혼란이 발생할 수 있습니다.
예를 들어 VC2010이 ADO로 데이터베이스에 연결될 때 e.Description() 앞에 반드시 추가(LPCTSTR)
 1     try

 2     {

 3         m_pConnection->Open((_bstr_t)lpszConnectString,"","",adModeUnknown);

 4     }

 5     catch (_com_error &e)

 6     {

 7         m_strErrorString.Format("%s:%s",e.ErrorMessage(),(LPCTSTR)e.Description());

 8         AfxMessageBox(m_strErrorString);

 9         return false;

10     }

좋은 웹페이지 즐겨찾기