我最近遇到了一个奇怪的问题:
我在打开文件的时候,想捕获可能发生的异常,所以写了下面的语句:
try
{
    if(Open(.......))//这里省略了打开文件的详细说明
    {
     ....
     }
}
catch(CFileException e)
{}
为什么当文件读入异常的时候,没有进入相应的错误处理段?
我想请教各位高手!有没有什么解决的方法。
对了,其实我如果throw这个异常,然后用catch(...)捕获是可以的。但是这样觉得实在太差,应该系统能够自动抛出异常,不知道有没有解决方法,谢谢!

解决方案 »

  1.   

    你catch的只是CFileException异常啊,也许在你try的代码中抛出的是其它的异常呢,你如果要全部捕获的话,试试
    catch(...)
    {
    }
      

  2.   

    不行的,我已经试过了,如果不throw,他好像不会进入出错处理程序块
      

  3.   

    你用的是CFile么?如果是,那么CFile::Open并不抛出异常,仔细看看CFile::Open的参数,你就知道open的最后那个参数是一个异常指针,如果打开文件出错,就会返回FALSE,此时应该检查最后一个参数获得异常信息。
      

  4.   

    我已经看了有关CFile::Open的帮助,也注意到你所说的问题,但是MFC到底在什么时候抛出异常?像内存分配失败这种?为什么会有这么双重的做法,太差了吧!
      

  5.   

    搞不清楚,如果某个成员函数抛出异常,MSDN的函数说明中会明确指出。至于为什么CFile::Open被设计为不抛出异常,我也想不通,期待牛人!!
      

  6.   

    用CFile:Open吧,这个才对应CFileException;