我喜欢用__try __except块来捕获内存访问异常,可是这个__try __except所在的函数中不能有C++类对象的定义,比如:class A{...};void fun{
A a;__try{...} 
__except()
{...}}
编译器会报错: error C2712: Cannot use __try in functions that require object unwinding
我想大概原因可能是防止当异常出现后程序流程被转入到异常处理代码而使原本在函数结束前'}'的类对象析构函数无法执行。真是不爽啊,编写稍复杂点的程序,就难免要用到类对象,请问我用什么办法来捕获内存异常呢?

解决方案 »

  1.   

    如果要使用类对象,可以用try...catch。
      

  2.   

    windows的异常就是这个特点,用C++的try/catch吧,支持C++对象的解析
      

  3.   

    try
     {
      CopyMemory(0,&fileSize,4 ); }
    catch(exception &r)
    {
     MessageBoxA(NULL,r.what(),CopyMemory异常 ",MB_ICONSTOP);
    }
    异常被系统捕获了,但为什么我没有捕捉到异常--消息框没出来 。。我工程的 /EHa 编译属性也指定了。
      

  4.   

    用 catch(...) 试试,是不是类型不对
      

  5.   

    我用catch(...) 捕捉到了异常!感谢大家回贴帮忙,感谢ghz !
    请大家继续指教 !
      

  6.   

    可惜分不多,再次感谢akirya、  感谢cnzdgs 、感谢Mackz 、感谢Crob 、感谢ghz !感谢每一位关注此贴的朋友!