如果我用catch(...)捕获异常,捕获到怎样删除异常现在是内层函数虽然捕获到了异常,但还会造成外层函数异常按照msdn说法,使用catch(非TRY...CATCH...END_CATCH宏)捕获到的异常必须显式删除,但怎样删除呢?另外,我使用catch(CException* e)捕获不到这个异常

解决方案 »

  1.   

    catch(...)
    {
      在这里作处理呀,比方说用return返回或进行其他处理等。
    }
      

  2.   

    catch(...)//三个点表示捕获所有异常
    {
      //在这里作处理呀,比方说用return返回或进行其他处理等。
       比如你可以SHOW一个BOX通知用户出错了,
       如果你要什么瓜都没有就什么都不要写,,
    }
      

  3.   

    char * p;
    *p ='A';
    报错吧!
    try
    {
    char * p;
    *p ='A';
    }
    catch (...) 
    {
    }
    不报错吧.
      

  4.   

    try,catch
    当try内有错误时系统不处理由catch处理
    有时候系统会结束程序 用一个catch(空的也行) 就不会退出catch(CException* e)
    e存储了错误的原因技术上可行
    符合你的要求吗?
    如果不明白
    请给我发短消息
    请附: 帖子的地址
      

  5.   

    举个例子:
    char * pFileName = "test.data";
    try
    {
    CFile file(pFileName,CFile::modeCreate | CFile::modeReadWrite);
    }
    catch(CFileEXception,e)
    {
     #ifdef _DEBUG
    afxDump << "File could not be opened" << e->m_cause << "\n";
     #endif
    }
    这样做的目的查明为什么打不开文件
      

  6.   

    csdn里有一些关于异常处理的讨论,在.NET/C#里MS做的更多!
      

  7.   

    《windows 核心编程》里有详细的讲解:
    第25章   未处理异常和C++异常 598
    25.1   即时调试 600
    25.2   关闭异常消息框 601
    25.2.1   强制进程终止运行 601
    25.2.2   包装一个线程函数 601
    25.2.3   包装所有的线程函数 601
    25.2.4   自动调用调试程序 602
    25.3  程序员自己调用UnhandledException
           Filter 602
    25.4   UnhandledExceptionFilter函数的一些
           细节 603
    25.5    异常与调试程序 604
    25.6   C++异常与结构性异常的对比 618
      

  8.   

    也可以
    catch(...){
        return;
    }
    让这个出现异常的函数返回;
    这样资源就能释放了!
    不知道是不是你要求的!
      

  9.   

    MFC捕获的异常应该显示删除,否则会造成内存泄漏,因为MFC异常是构造在堆上的,如下做法:
    try
    {
        ...
    }
    catch(CException* e)
    {
        ... //可以用 e->m_cause 查看异常原因;
        e->Delete();
    }