Serialize的问题
我在CXXXDoucment::Serialize()中读取一个很大的文件,些文件可能格式不正确,所以读取过程中很可能出错。
出错要我抛一个CArchiveException的异常,MFC会自动弹出一个消息框报告一个异常。我现在想在读出出错后想使用自己的方式将错误报告给用户,而不使用MFC的异常报告,有什么办法吗?
问题点数:100、回复次数:3Top
1 楼lizhizhe2000(武安侯)回复于 2006-11-02 21:53:32 得分 5
捕获CArchiveException异常,然后自己写程序处理不可以吗?Top
2 楼avisnet(第十维度)回复于 2006-11-02 22:02:56 得分 95
你在Serialize()中抛出的异常是由CDocument::OnOpenDocument()处理的,不能自己捕获。
CDocument::OnOpenDocument捕获你抛出的异常后调用ReportSaveLoadException报告错误信息,ReportSaveLoadException是个虚函数,因些你可以在你的Doc类中重写个函数,在这个函数中直接返回即可。
当CDocument::OnOpenDocument捕获到你的异常后,CDocument::OnOpenDocument会返回FALSE,所以你可重你的Doc类的OnOpenDocument函数来报告错误信息。
BOOL CTestDoc::OnOpenDocument(LPCTSTR lpszPathName)
{
if(!CDocument::OnOpenDocument(lpszPathName))
{
AfxMessageBox(_T("打开文件错误!"));
return FALSE;
}
return TRUE;
}
void CTestDoc::ReportSaveLoadException(...)
{
return;
}Top
3 楼wangjs210(听雨舟)回复于 2006-11-02 22:24:39 得分 0
多谢Top




