try
 {
   CString s1,s2;
           s1="abcd";
   s2=s1.Mid(23,8);
 }
 catch(CMemoryException  *pEx)
 {
 pEx->ReportError(MB_OK);
 MessageBox("解析错误");
 }
  为什么扑捉不到这个错误 运行的时候还是弹出Assert错误?

解决方案 »

  1.   

    Assert不是错误,不能捕捉Assert操作的,它只是在Debug里出来,对你已知的错误给出提示。
      

  2.   

    CString Mid( int nFirst, int nCount ) const;
    throw( CMemoryException );
     函数说明是抛出异常的!!!!
      

  3.   

    你这个只要自己判断Mid参数不超出字符串范围即可避免,因此不需要异常处理,ASSERT就是在调试期间提醒你这个错误,所谓异常是无法判断的运行错误。
      

  4.   

    不一定只有release 你可以try catch 捕捉所有异常 不做处理