2
如果CStdioFile :: Open失败,我希望能够报告错误的原因。从CStdioFile :: Open()获取错误消息?
但是,它看起来好像从不抛出异常。此外,当我尝试以下方法:
CStdioFile file;
CFileException exc;
bool bSuccess = (file.Open(_T("FileDNE"), _O_RDONLY, &exc) == TRUE);
ASSERT_FALSE(bSuccess);
CString err;
exc.GetErrorMessage(err.GetBufferSetLength(255), 255);
std::cout << CStringA(err);
断言被绊倒的地方低下来exc.GetErrorMessage:
ASSERT(afxCurrentResourceHandle != NULL);
我读过这发生在我不使用一个try-catch块。但是,为什么在Open不抛出任何异常时使用try-catch块?
关于如何报告打开错误的任何想法都会有所帮助!
打开电话后,我尝试了_get_doserrno和_get_errno,使用strerror输出它们。在这两种情况下,输出都是“无错误”。 – des4maisons 2010-07-26 19:50:28
感谢您的回答,顺便说一句。 – des4maisons 2010-07-26 19:52:20
这应该工作,看看我的答案后编辑。 – adf88 2010-07-27 01:14:01