我的读文件函数如下:
void CEventViewerDlg::ReadLogFile()
{
CFile LogFile;
try
{
LogFile.Open(m_strFilePathName,CFile::modeRead|CFile::modeNoTruncate);
}
catch (CFileException& Exception)
{
switch(Exception.m_cause)
{
case CFileException::accessDenied:
MessageBox("Access denied!","Error",MB_OK|MB_ICONERROR);
break;
case CFileException::badPath:
MessageBox("Invalid path name!","Error",MB_OK|MB_ICONERROR);
break;
case CFileException::diskFull:
MessageBox("Disk is full!","Error",MB_OK|MB_ICONERROR);
break;
case CFileException::hardIO:
MessageBox("Hardware Error!","Error",MB_OK|MB_ICONERROR);
break;
}
}
…………//读写文件的代码,略
}
1.当发生异常,执行完catch块后,我下面读写文件的代码还会被执行吗?
2.catch块中是否要用return跳出函数呢?
会执行,一般要return,试情况而定。
如果在return时有没释放的资源那就要释放
所以用try...catch...的时候程序流程要设计好 ^^
1、按楼主写的程序上
当发生异常时,跳出异常后程序还是会往下执行的
2、最好是用return跳出函数,这样函数及函数中的变量的栈空间就会被释放!
希望对楼主有所帮助!