目前,我正在调查一些使用MFC库中的CFile
类来打开文本文件的代码。
我在代码中发现了两种错误处理:这只是样本,因为发布代码是保密的。只要认为try语句的主体只包含CFile类的成员函数。
try {
if(file.Open(strPath,Cfile::modeRead|CFile::shareDenyNone)){
file.Read(strKey, dataLength);
file.Close();
}
}
catch (CFileException& e) {
}
try {
// same code above
}
catch (CFileException *e) {
}
CFile
类的成员函数可以抛出哪些错误?CFile
类的成员函数抛出的异常?答案 0 :(得分:1)
您可以通过两种方式抛出异常对象:
CException ex;
throw ex; // CException
或通过指针:
CException *ex = new CException();
throw ex; // CException *
捕获异常时,会捕获相应类型的抛出内容,即指针或值。为避免副本,我们通常使用引用按值进行追踪:
catch(CException &e) // when throwing CException
MFC通过指针抛出异常;见https://msdn.microsoft.com/en-us/library/0e5twxsh.aspx
try {
AfxThrowUserException();
}
catch( CException* e ) {
e->Delete();
}
不要忘记之后删除异常,否则每次抛出异常都会导致内存泄漏。