Visual c++ 从CStdioFile::Open()获取错误消息?

Visual c++ 从CStdioFile::Open()获取错误消息?,visual-c++,mfc,exception-handling,error-handling,cfile,Visual C++,Mfc,Exception Handling,Error Handling,Cfile,如果CStdioFile::Open失败,我希望能够报告错误的原因 然而,它似乎从未抛出异常。此外,当我尝试以下操作时: CStdioFile file; CFileException exc; bool bSuccess = (file.Open(_T("FileDNE"), _O_RDONLY, &exc) == TRUE); ASSERT_FALSE(bSuccess); CString err; exc.GetErrorMessage(err.GetBufferSetLeng

如果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);
我读过,当我不使用try-catch块时,会发生这种情况。但是当Open没有抛出任何异常时,为什么要使用try-catch块呢


任何关于如何报告开放性错误的想法都会很有帮助

参见示例。

调用open后,我尝试了_get_doserrno和_get_errno,使用strerror输出它们。在这两种情况下,输出都是“无错误”。我同意这是可行的,我可能会这样做。但是,真的没有用Open报告错误的好方法吗?
ASSERT(afxCurrentResourceHandle != NULL);