vc try ...捕捉所有异常的问题我想在VC++2005 写的应用程序代码中,捕捉异常, 正确的写法应如何写?在VC代码中捕捉异常的用法的使用数量 比其它语言(delphi等)写的代码要少,这是为什么?是不是C++更安全?

解决方案 »

  1.   

    try
    {
        ... ...
        某种有可能发生例外的处理();
        ... ...
    }
    catch(CException *e)
    {
        e->显示例外内容等的処理();
        e->Delete();
    }/////////////////////////
    >>是不是C++更安全?
    我觉得C++不会提高安全形,用和不用是习惯问题。CException类的派生与使用(VC++)
    http://www.softist.com/programemo/cexception/cexception.htm
      

  2.   

    try
    {
    ***
    }
    catch(CException *e)//捕捉一个CException类型的异常
    {
    ***
    }
    catch(...)          //捕捉剩下的所有的异常
    {
    ***
    }
      

  3.   

    try 

        ... ... 
        某种有可能发生例外的处理(); 
        ... ... 

    catch(CException *e) 

        e->显示例外内容等的処理(); 
        e->Delete(); 

    -----> 在我的代码中捕捉不到错误码.
      

  4.   

    抓不着的原因是没有被抛出来。
    假如我们自己抛出来一个“内存不足”,谎报军情。↓↓↓void Test1()
    {
      AfxThrowMemoryException();
    }void CXxxxDlg::OnButton1() 
    {
      try
      {
        Test1();
      }
      catch (CException* e)
      {
        e->ReportError();
        e->Delete();
      }
    }
      

  5.   

    用词不准请原谅。“例外”应该是“异常”
    throw+try+catch 提供了一个特殊通道是子程序一下子跳到上层程序中去。
    不过,百度字典对exception的解释也是“例外”。哈哈。
      

  6.   


    try 

        wcscpy_s(m_szNameBuf, sizeof(m_szNameBuf), pInforSMS->names[0]); 

    catch(CException *e) 

         //e->显示例外内容等的処理(); 
         //e->Delete(); 
         MessageBox(_T("   Error  ")); 
    } wcscpy_s 出错时,捕捉不到这个错误。如何捕捉 wcscpy_s 出错的信息?
      

  7.   

    wcscpy_s没有扔出“例外”吧?
    底层函数应该没有扔“例外”的做法,MFC层的程序大量使用扔“例外”的做法吧?
    试一下其他方法,比如,GetLastError等等。
    个人意见,供参考。
      

  8.   

    wcscpy_s(m_szNameBuf, sizeof(m_szNameBuf), pInforSMS->names[0]);  这样的稍底层一些的函数的错误捕捉不到,会给应用程序增加许多 隐患。正确的方式应如何处理?
      

  9.   

    errno_t wcscpy_s()
    出错时有错误的返回值 ERANGE,EINVAL。
      

  10.   


    TCHAR  names[50][12];
    TCHAR  m_szNameBuf[100][30]; if (wcscpy_s(m_szNameBuf[i], sizeof(m_szNameBuf[i]), names[i]) == 0) 
    {
      // MessageBox(L"  wcscpy_s ok   ");
    }
    else
    {
      // MessageBox(L"  wcscpy_s error   ");
    }
    wcscpy_s 正确时,有提示; 出错时,没提示, 直接退出函数.
      

  11.   

    C#版 try-catch-finallytry 

    *** 
    } catch(Exception ex)//捕捉一个CException类型的异常 

    *** //有异常时执行该代码
    } finally
    {
    //无论有无异常都执行
    //释放资源
    }