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 ブロックを使用するのでしょうか?
オープンエラーを報告する方法についてのアイデアは役に立ちます!