大家看下,怎么抓住这3句代码的错误?

大家看下,如何抓住这3句代码的异常??
程序在VC6下,我加了/EHa选项,还是无法弹出对话框,直接崩溃
VC2008也不行


char RecordNum[5];
char *pTemp2;
char Contents[] = "Rec 1-10FF";
int qq;

try
{
pTemp2 = strchr(Contents, '-');

qq = strchr(Contents, ':') - (pTemp2+1);

memcpy(RecordNum, pTemp2+1, qq);
}
catch (...)
{
AfxMessageBox(_T("aaaaa"));
}

------解决方案--------------------
你这个异常需要使用 SetUnhandledExceptionFilter 来捕获
------解决方案--------------------
内存访问违规等直接会崩,无法catch到
------解决方案--------------------
看一下这些函数的说明,这些函数应该 都没有抛出异常,没有东西可以捕捉!

函数应该有使用throw抛出异常,你才能捕捉,你那几个函数都是C的函数,c的语法是没有throw关键字的
------解决方案--------------------
http://www.codeproject.com/Articles/154686/SetUnhandledExceptionFilter-and-the-C-C-Runtime-Li
------解决方案--------------------
Structured Exception Handling 异常扑捉
------解决方案--------------------
pTemp2 = strchr(Contents, '-');      
if(pTemp2 != NULL)
{
qq = strchr(Contents, ':') - (pTemp2+1);
memcpy(RecordNum, pTemp2+1, qq); 

------解决方案--------------------
memcpy 的参数是 size_t, -3将是一个很大的值

用高版本的memcpy_s 可以用 _set_invalid_parameter_handler 捕获异常参数