2

如果 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 块呢?

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

4

1 回答 1

1

请参阅CStdioFile::CStdioFile示例。

于 2010-07-26T19:34:32.520 回答