CFileException类的声明文件保存在头文件afx.h中。 当我们在使用CFile及其派生类的对象的时候,如果产生异常则会创建和抛出CFileException对象。采用TRY…CATCH…END_CATCH。 CFileException类的成员变量: m_cause:错误代码 CFileException::none 没有错误发生 CFileException::generic 一个未被指明的错误发生 CFileException::fileNotFind 该文件不能被定位 CFileException::badPath 整个或者部分路径是无效的 CFileException::tooManyOpenFiles 打开文件的数目太多 CFileException::accessDenied 文件不能被访问 CFileException::invalidFile 试图使用无效文件的句柄 CFileException::removeCurrentDir 当前工作路径不能被移除 CFileException::directoryFull 不再有目录项 CFileException::badSeek 试图设置文件指针错误 CFileException::hardIO 硬件错误 CFileException::sharingViolation 不能调用share.exe文件,或者共享区域被锁 CFileException::lockViolation 试图锁定一个已经被锁的区域 CFileException::diskFull 磁盘空间已满 CFileException::endOfFile 访问到文件尾部 m_IOsEror:操作系统异常错误代码,LONG型 m_strFileName:产生异常情况的文件名称,CString型 CFileException类的成员变量: CFileException( int cause = CFileException::none, 异常原因代码 LONG IOsError = -1, 操作系统提示的错误 LPCTSTR lpszArchiveName = NULL 产生错误的CFile对象 ); 除了使用全局函数AfxThrowFileException,不能直接创建一个异常文件对象。 注意:IOsError只能应用在CFile和CStdioFile类产生的对象中。CMemFile对象不能操作该错误代码。 static int PASCAL ErrnoToException(int nErrno); 将运行时的错误值转换为一个CFileException被枚举定义的错误值 nErrno:指的是头文件ERRNO.H中定义的运行时错误值 该函数返回与运行时错误相对应的枚举值 static int PASCAL OsErrorToException(LONG IOsError); 将操作系统产生的错误值转换为一个CFileException被枚举定义的错误值 IOsError:指的是操作系统指定的错误值 该函数返回与操作系统错误相对应的枚举值,如果该错误没有对应的CFileException定义的错误值,则会返回CFileException::generic static void PASCAL ThrowErrno( int nErrno, LPCTSTR lpszFileName = NULL ); 构造一个与ERRNO.H头文件声明的错误值一致的CFileException对象,并抛出该异常。 static void PASCAL ThrowOsError( LONG IOsError, LPCTSTR lpszFileName = NULL ); 抛出一个与操作系统错误一致的CFileException对象,如果IOsError错误代码不可知,则抛出异常代码CFileException::generic