Exception 에러 메세지창으로 띄우기
try
{
// Exception 발생 구문
}
catch (CException *ex)
{
ex->ReportError();
}
Excption 에러 메세지 얻어오기
try
{
// Exception 발생 구문
}
catch (CException *ex)
{
TCHAR szMsg[1024] = {0,};
ex->GetErrorMessage(szMsg, 1024);
CString strMsg;
strMsg.Format(/*적절한 메세지 만들기*/);
::AfxMessageBox(strMsg);
}
위에 예문을 토대로 함수를 만들어 봤습니다.
Made by 꾸션
헤더
CString GetErrorDescription(CException *ex);
CString GetDetailErrorMessage(DWORD dwErrorCode, CString strErrorDescription, CString &strFile, DWORD &dwLineNo);
void DetailErrorMessageBox(CException *ex, CString strFile, DWORD dwLineNo, UINT uMB_IconButton /*= MB_OK*/);
소스
CString GetErrorDescription(CException *ex)
{
CString strExceptionDescription;
TCHAR szException[1024] = {0,};
if (ex->GetErrorMessage(szException, 1024))
strExceptionDescription = szException;
return strExceptionDescription;
}
CString GetDetailErrorMessage(DWORD dwErrorCode, CString strErrorDescription, CString &strFile, DWORD &dwLineNo)
{
CString strErrorMessage;
COleDateTime datetime = COleDateTime::GetCurrentTime();
strErrorMessage.Format(
_T("Date Time: %s\n")
_T("ErrorCode: %d\n\n")
_T("%s\n\n")
_T("File: %s\n")
_T("Line: %d"),
datetime.Format(),
dwErrorCode,
strErrorDescription,
strFile,
dwLineNo);
return strErrorMessage;
}
void DetailErrorMessageBox(CException *ex, CString strFile, DWORD dwLineNo, UINT uMB_IconButton /*= MB_OK*/)
{
CString strErrorDescription = GetErrorDescription(ex);
CString strDetailErrorMessage = GetDetailErrorMessage(GetLastError(), strErrorDescription, strFile, dwLineNo);
::AfxMessageBox(strDetailErrorMessage, uMB_IconButton);
}
사용
try
{
// Exception 발생 구문
}
catch (CException *ex)
{
DetailErrorMessageBox(ex, _T(__FILE__), __LINE__, MB_ICONERROR | MB_OK);
}
반응형
댓글