typedef struct tagTVGuideInfo
{
CString strName;
}TVGUIDEINFO;TVGUIDEINFO* testInfo; try
{
testInfo->strName = _T("000");
}
catch(...)
{
AfxMessageBox(_T("异常"));
}
为什么捕获不到呢?

解决方案 »

  1.   

    访问空无效指针?
    试试用__try捕获
      

  2.   

    testInfo->strName 这不是异常了,只是名字不适合法亚!只要判名字的合法性就可以了.
      

  3.   

    试过,用__try也不行,照样出问题
      

  4.   

    __try 

    testInfo->strName = _T("000"); 

    __except(1)

    AfxMessageBox(_T("异常")); 
    }
      

  5.   

    cnzdgs,谢谢你!不过不行啊!我一开始就是这样做的,但是就是捕捉不到,不知道怎么办好了~~
      

  6.   

    捕捉异常的前提当然是要有异常,
    testInfo->strName = _T("000"); //我不认为它是一个异常,如果不是异常那如何会捕捉得到呢?
    typedef struct tagTVGuideInfo 

    CString strName; 
    }TVGUIDEINFO; TVGUIDEINFO* testInfo; try 

        cout << testInfo; // 试一下输出一个没有初始化的指针看看会不会有异常,注:这个代码我没有测试过。

    catch(...) 

    AfxMessageBox(_T("异常")); 

      

  7.   

    运行到   testInfo->strName = _T("000")   句时就弹出这样的错误:Run-Time Check Failure #3 - The variable 'testInfo' is being used without being initialized. 
    然后程序就死掉了
      

  8.   

    我刚试了楼主的代码,可以捕获。使用VC6下mfc控制台程序测试
      

  9.   

    如果你用Debug配置编译就会这样,改成Release就不会出这个提示了。
      

  10.   

    我又试了下,release下也可捕获(出现message box)。难道因为我装了sp6
      

  11.   

    我试了一下,用Debug后,testInfo 指向地址 0xcccccccc,所以捕获不到.
    用Release后, testInfo 指向地址 0x7e22b6b7 .但是我希望在Debug下也能够捕获, 希望大家还能帮帮我!
      

  12.   

    这与指针的值没有关系,你把testInfo赋值为0xcccccccc再执行就不会出现这个错误信息。Debug版本身会自动捕获异常,当它无法判断出异常原因时,才会把异常抛出来。换句话说,catch、except、finally都是由VC的运行库中的代码调用的,是否调用是运行库说了算,所以Debug版捕获不到这类异常。实际上也不需要捕获,因为这类异常是不改出现的错误,在程序的调试阶段应该全部排除掉。