打开文件时出现异常

时间:2010-03-24 09:24:08

标签: mfc file exception-handling visual-c++

我有一个VC ++应用程序,在我的应用程序中,我有一些基本的文件操作。

以下是默认代码

CStdioFile cFile;
CFileException e;
CString sReport;
CString sHtmlfile = "testreport.html"
OutputDebugString((sHtmlfile));
if (!cFile.Open(sHtmlfile,CFile::modeCreate | CFile::modeWrite, &e ))
{
}

问题是我的应用程序每隔几分钟执行一段代码。它工作正常。

在多次运行代码后,cFile.Open()函数失败。我试图收到错误消息

TCHAR szError[1024];
e.GetErrorMessage(szError,1024);
OutputDebugString((szError));

具有讽刺意味的是szError错误消息是“没有错误发生”。

一旦我重新启动我的应用程序,这再次有效。不知道为什么会这样。

提前致谢。

3 个答案:

答案 0 :(得分:2)

您有多个实例在运行吗?我建议您在发生错误时使用Process Explorer来查看是否存在该文件的任何其他句柄。

GetLastError将报告上一个API函数报告的错误。如果在失败的API调用和对GetLastError的调用之间存在任何其他API调用,则会覆盖最后一个错误值。 (正如@sbi已经在评论中指出的那样。)

答案 1 :(得分:1)

Maube你忘记关闭你的文件,它来自文件描述符。当您退出应用程序时它们全部关闭,然后您可以再次运行它。检查您的文件是否已关闭。

行。如果不是上述情况,它会是什么?您从cFile.Open收到错误消息,因此我们可以相信它是准确的。

我不确定如果当前进程已经打开了另一个同名文件,或者您尝试打开一个名为空字符串的文件,会发生什么情况。要对它们进行排序,您还可以使用错误打印要打开的文件的名称(并跟踪未发生错误的情况)。

答案 2 :(得分:1)

您正在使用C ++。您的错误可能完全在其他地方。我有一个指针错误,导致干净的代码咳出错误。

您是否尝试过在发布模式下构建?

我建议您尝试逐步完成并缩小错误出现的位置。