2010-07-26 185 views
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块?

关于如何报告打开错误的任何想法都会有所帮助!

回答

1

请参阅CStdioFile::CStdioFile示例。

+0

打开电话后,我尝试了_get_doserrno和_get_errno,使用strerror输出它们。在这两种情况下,输出都是“无错误”。 – des4maisons 2010-07-26 19:50:28

+0

感谢您的回答,顺便说一句。 – des4maisons 2010-07-26 19:52:20

+0

这应该工作,看看我的答案后编辑。 – adf88 2010-07-27 01:14:01