我有一個CExceptionHandler
類,只要我的應用程序檢測到運行時異常,就會調用它。例如:將有用的數據轉儲到控制檯上捕獲異常
if (val == NULL)
{
TRACE(_T("Unexpected NULL in sequence."));
AfxThrowException(ERROR_INVALID_DATA);
}
AfxThrowException
很簡單:
void AfxThrowException(DWORD error)
{
CExceptionHandler * pException = NULL;
if (error == 0)
{
error = ::GetLastError();
}
pException = new CExceptionHandler(error);
TRACE(_T("Warning: throwing CSerialException for error %d\n"), error);
THROW(pException);
}
這是CExceptionHandler
成員Dump
功能:
void CExceptionHandler::Dump(CDumpContext & dc) const
{
CObject::Dump(dc);
dc << "m_dwError = " << m_dwError;
}
在我的代碼越往上我有try
/catch
聲明:
try
{
/* My app does stuff where the exception is thrown. */
}
catch(CExceptionHandler * ex)
{
afxDump << _T("Dumping exceptional data: ") << _T("\r\n");
ex->Dump(afxDump);
afxDump << _T("\r\n");
}
我想收集的調試信息被轉儲到控制檯。但是,當PC進入catch
語句(通過斷點驗證)時,控制檯上沒有任何反應。我在調試模式下使用Visual Studio 2008。感謝讚賞。謝謝。
是否存在引發動態分配內存的結果? (Leaky。) – GManNickG 2010-11-09 23:00:26
@GMan:你有使用「reason」而不是「result」的結果嗎? ':)'(哦,我認爲那就是MFC,但是我對此事的看法僅僅來自傳聞......) – sbi 2010-11-09 23:23:43
@sbi:哈,好。 – GManNickG 2010-11-09 23:25:16