刚从Delphi过来,多多帮忙!Thanks

解决方案 »

  1.   

    在VC里可以用这样的办法
    try
    {
        //你的代码
    }
    catch(CFileException &e)
    {
        //已知类型的错误
    }
    catch(...)
    {
        //未知类型的错误
    }一般到了CATCH里就是严重的错误了,如果你想让它继续也可以。对于一些不能保证无错的代码(如DB,FILE)可以这样容错。对于内存错误也可以捕捉,当然最好还是一开始写码写的错误少一些
      

  2.   

    可以啊,比如studentforever(睡眼惺忪的鸭蛋) 例子里的CFileException类就有很多详细的成员说明问题。查一查MSDN吧。
      

  3.   

    不一定。因为C++中,任何类型都可以当成一个例外抛出。
    这样子,你就不一定能得到。
    当然,STL和MFC/ATL标准的例外,一般都带有信息。
    另外MFC中的例外如CFileException,如果用try catch来捉的话,注意把指针释放掉:
    try
    {...}
    catch (CFileException * e)
    {
    ...
    e.Delete
    }
      

  4.   

    更正:是 e->Delete()
    另: STL异常不需要删除。抄录一段MSDN中关于MFC的CException异常的文章(仅限于MFC)
    catch 块在下列情况时必须删除异常: catch 块引发新的异常。 
    当然,如果您再次引发同一异常,则不必删除该异常: catch(CException* e)
    {
        if (m_bThrowExceptionAgain)
            throw; // Do not delete e
    }
    执行从 catch 块中返回。 
    注意 删除 CException 时,请使用 Delete 成员函数删除该异常。不要使用 delete 关键字,因为如果异常不在堆上,则该关键字可能失败。
    捕捉和删除异常 使用 try 关键字设置 try 块。执行任何可引发 try 块中异常的程序语句。 
    使用 catch 关键字设置 catch 块。将异常处理代码放在 catch 块中。只有当 try 块中的代码引发 catch 语句中指定类型的异常时,才会执行 catch 块中的代码。 下面的主干显示 try 与 catch 块通常的排列方式: // Normal program statements
    ...try
    {
        // Execute some code that might throw an exception.
    }
    catch( CException* e )
    {
        // Handle the exception here.
        // "e" contains information about the exception.
        e->Delete();}