在一個函數中不能混合使用
try{}catch(CException *e){}
與
__try{}__except(EXCEPTION_EXECUTE_HANDLER){}
編譯時報錯
error C2713: 每個函數只允許一種異常處理方式
解決方法:
將__try__except代碼單獨成一個函數
void robustMemcpy()
{
__try
{
memcpy(dstMapAddress, buffer, dwBlockBytes);
}
__except(EXCEPTION_EXECUTE_HANDLER)
{
}
}
//以下C++函數調用一個使用SEH異常處理的函數
void cpp_funtion()
{
robustMemcpy();
try
{
//...
}
catch(CInternetException *pEx)
{
TCHAR szErr[1024];
if (pEx->GetErrorMessage(szErr, 1024))
AfxMessageBox(szErr, MB_OK);
pEx->Delete();
}
}