首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >打开文件时出现异常

打开文件时出现异常
EN

Stack Overflow用户
提问于 2010-03-24 17:24:08
回答 3查看 2.9K关注 0票数 1

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

以下是默认代码

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

问题是我的应用程序每隔几分钟就执行一次这段代码。它工作得很好。

在多次运行代码之后,cFile.Open()函数失败。我尝试获取错误消息

代码语言:javascript
复制
TCHAR szError[1024];
e.GetErrorMessage(szError,1024);
OutputDebugString((szError));

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

当我重新启动我的应用程序时,这又会起作用。知道为什么会发生这种情况吗。

提前谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-03-29 16:33:15

您是否有多个实例在运行?我建议您在出现错误时使用Process Explorer,以查看是否存在上述文件的任何其他句柄。

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

票数 2
EN

Stack Overflow用户

发布于 2010-03-24 17:31:04

如果你忘记关闭你的文件,它就会从文件描述符中出来。当你退出你的应用程序时,它们都会关闭,然后你可以再次运行它。检查您的文件是否已关闭。

好的。如果不是上面的情况,那会是什么呢?您从cFile.Open得到了错误消息,因此我们可以相信它是准确的。

我不确定如果当前进程已经打开了另一个同名文件,或者您试图打开一个名称陌生的文件,比如空字符串,会发生什么情况。要解决这些问题,您还可以打印出打开时出现错误的文件的名称(还可以跟踪未发生错误的情况)。

票数 1
EN

Stack Overflow用户

发布于 2010-03-30 02:43:27

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

你有没有尝试过在发布模式下构建?

我建议尝试一步一步地检查,也许可以缩小出现错误的范围。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2506485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档