《Visual C++ 6.0实例教程》教学资源(PPT课件讲稿)第8章 异常处理和诊断

第8章异常处理和诊断 内容摘要: 1.处理C艹+异常 2.MFC异常类捕获程序异常 3.MFC提供的用于诊断程序的宏调式程序
第8章 异常处理和诊断 内容摘要: 1. 处理C++异常 2. MFC异常类捕获程序异常 3. MFC提供的用于诊断程序的宏调式程序 返回目录

8.1 8.1处理C++异 学习目标 使用try、 catch、 throw三个关 字来实现异常处理
8.1 处理C++异 学习目标 使用try、catch、throw三个关 字来实现异常处理 。 8.1 返回第8章

8.1 1.try块:标志可能会出现异常的代码 2. catch块:紧跟着ty块,里面包含了处理异常 的代码。 3. throw块:抛出一个异常,激活 catch块中相 应的异常处理代码
1. try块:标志可能会出现异常的代码。 2. catch块:紧跟着try块,里面包含了处理异常 的代码。 3. throw块 :抛出一个异常,激活catch块中相 应的异常处理代码。 8.1

include 8.1 ass CExcept ublic CEXcept(int EXCode) m XCOde xcode nt GetCodeo return m Exco ate int m XCOde: oid maino
例题 #include class CExcept { public: CExcept(int ExCode) { m_ExCode = ExCode; } int GetCode() { return m_ExCode; } private: int m_ExCode; }; void main() { 8.1

解释 8.1 如果异常在关键字try后面的代码块中扔出,则控制立即传出这个块,如果try 块后面有适当的 catch块,则控制传入 catch块处理异常。 catch块前面有关键字 catch和括号中的声明。如果这个声明中指定的类型符合 产生异常的 throw语句给出的数值类型,则控制传入关键字 catch后面的块。如 果类型不符,则程序寻找另一个 catch块。 catch块中的代码执行完毕后,控制 传入块后面的第一个语句 在上面的程序中,如果在try中扔出的是字符串,则进入第一个 catch块;如果 在try中扔出的是整型数据,则进入第二个 catch块;如果在try中扔出的是 CExcept类型,则进入第三个 catch块;如果在ty中扔出的是其他类型的数据, 则进入最后一个 catch块。 最后一个 catch块的声明是一个省略号(…),而不是具体数据类型,表示该 catch块可以接收前面ty块扔出的任何异常,但由于没有参数,不能访问扔出 异常提供的值。如果有多个 catch,则省略号 catch块应该放在最后
解释 8.1 如果异常在关键字try后面的代码块中扔出,则控制立即传出这个块,如果try 块后面有适当的catch块,则控制传入catch块处理异常。 catch块前面有关键字catch和括号中的声明。如果这个声明中指定的类型符合 产生异常的throw语句给出的数值类型,则控制传入关键字catch后面的块。如 果类型不符,则程序寻找另一个catch块。catch块中的代码执行完毕后,控制 传入块后面的第一个语句。 在上面的程序中,如果在try中扔出的是字符串,则进入第一个catch块;如果 在try中扔出的是整型数据,则进入第二个catch块;如果在try中扔出的是 CExcept类型,则进入第三个catch块;如果在try中扔出的是其他类型的数据, 则进入最后一个catch块。 最后一个catch块的声明是一个省略号(…),而不是具体数据类型,表示该 catch块可以接收前面try块扔出的任何异常,但由于没有参数,不能访问扔出 异常提供的值。如果有多个catch块,则省略号catch块应该放在最后

82MFC异常类 8.2 Exceptions CEx ception CArchiveException CDaoException CDBException CFileException CInternetException CMemoryException CNotSupportedException ColeException COleDi spatch Ex ception CResourceExce pti on LCUser Ex ception
8.2 MFC异常类 8.2 返回第8章

8.2 CFlle Exception 三个描述异常原因的成员变量 1. m cause:包含与错误原因对应的代码。 2. m lOs error:包含相关的操作系统错误数。 3. m strfileName:包含出现异常的文件名
CFileException 8.2 三个描述异常原因的成员变量 1. m_cause:包含与错误原因对应的代码。 2. m_lOsError:包含相关的操作系统错误数。 3. m_strFileName:包含出现异常的文件名

m cause可能为以下值 8.2 CFileException∷none 没有错误发生 CFileEXception generic 未指定的错误 CFileException: file Found:文件找不到错误。 CFileException: badPath 全部或部分路径无效 CFileException: tooManyOpenFiles:超出允许打开的文件数目 CFile Exception: accessDenied:不能访问文件 CFileException: invalidfile:试图访问一个无效的文件 CFileException: remove Current Dir:试图删除正在操作的目录。 CFileException: directory full!目录个数已满 CFileException hardI CFileException: badSeek 试图设置文件位置指针出错 硬件出错 CFileException: sharing Violation:共享出错 CFileException∷: lock violation:试图锁定已锁定的区域 CFileException: diskFull: 磁盘空间已满 CFileEXception; endOfFile 到达文件结尾
8.2 m_cause可能为以下值 CFileException::none: 没有错误发生。 CFileException::generic: 未指定的错误。 CFileException::fileNotFound :文件找不到错误。 CFileException::badPath : 全部或部分路径无效。 CFileException::tooManyOpenFiles:超出允许打开的文件数目。 CFileException::accessDenied :不能访问文件。 CFileException::invalidFile : 试图访问一个无效的文件。 CFileException::removeCurrentDir:试图删除正在操作的目录。 CFileException::directoryFull: 目录个数已满。 CFileException::badSeek : 试图设置文件位置指针出错。 CFileException::hardIO : 硬件出错。 CFileException::sharingViolation : 共享出错。 CFileException::lockViolation : 试图锁定已锁定的区域。 CFileException::diskFull : 磁盘空间已满。 CFileException::endOfFile : 到达文件结尾

例子 8.2 extern char pFile Name: TRY CFile f( pFile Name, CFile: mode Create CFile: modeWrite CATCH( CFileEXception e if(e->m cause = CFile EXception fileNotFound printf(" ERROR: File not found\n") else if( e->m cause ==CFileEXception diskFull) printf("ERROR: Disk full\n") else if(e->m cause = CFile EXception: endofFile) printf( "ERROR: End Of FileIn) END CATCH
例子 8.2 extern char* pFileName; TRY { CFile f( pFileName, CFile::modeCreate | CFile::modeWrite ); } CATCH( CFileException e ) { if( e->m_cause == CFileException::fileNotFound ) printf( "ERROR: File not found\n"); else if( e->m_cause == CFileException:: diskFull) printf( "ERROR: Disk full\n"); else if( e->m_cause == CFileException:: endOfFile) printf( "ERROR: End Of File\n"); } END_CATCH

8.3诊断服务 8.3 使用 ASSERT宏 2.使用Ⅴ ERIFY宏 3.使用 TRACE宏
8.3 诊断服务 8.3 1. 使用ASSERT宏 2.使用VERIFY宏 3.使用TRACE宏 返回第8章
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 《Visual C++ 6.0实例教程》教学资源(PPT课件讲稿)第7章 MFC通用类.ppt
- 《Visual C++ 6.0实例教程》教学资源(PPT课件讲稿)第6章 文件操作.ppt
- 《Visual C++ 6.0实例教程》教学资源(PPT课件讲稿)第5章 图形操作.ppt
- 《Visual C++ 6.0实例教程》教学资源(PPT课件讲稿)第4章 菜单、快捷键和控制条.ppt
- 《Visual C++ 6.0实例教程》教学资源(PPT课件讲稿)第3章 对话框与控件.ppt
- 《Visual C++ 6.0实例教程》教学资源(PPT课件讲稿)第2章 文档和视.ppt
- 《Visual C++ 6.0实例教程》教学资源(PPT课件讲稿)目录.ppt
- 《电子政务教案》第8章 电子政务与政府流程优化.ppt
- 《电子政务教案》第5章 全球电子政务建设实践.ppt
- 《电子政务教案》第4章 政府公共服务的电子化.ppt
- 《电子政务教案》第3章 电子政务的基础与核心.ppt
- 《电子政务教案》第2章 电子政务对政府管理的影响.ppt
- 《电子政务教案》第1章 信息技术的发展与电子政务的产生.ppt
- 《电子政务教案》第11章 我国电子政务的发展战略.ppt
- 《电子政务教案》第10章 电子政务的法律环塘.ppt
- 《电子政务教案》第9章 电子政务的安全管理.ppt
- 《电子政务教案》第7章 电子政务的系统规划与建设.ppt
- 《电子政务教案》第6章 电子政务的技术基础.ppt
- 《电子商务概论》课程教学资源(PPT课件讲稿)第四章 电子数据交换.ppt
- 《电子商务概论》课程教学资源(PPT课件讲稿)第十章 电子商务网站的建设.ppt
- 《Visual C++ 6.0实例教程》教学资源(PPT课件讲稿)第9章 多线程.ppt
- 清华大学:《科技文献检索》课程教学课件(PPT讲稿)绪论(主讲:花芳).ppt
- 清华大学:《科技文献检索》课程教学课件(PPT讲稿)第一章 文献及概念.ppt
- 清华大学:《科技文献检索》课程教学课件(PPT讲稿)第二章 文献检索原理及方法.ppt
- 清华大学:《科技文献检索》课程教学课件(PPT讲稿)工程索引 The Engineering Index(Ei简介).ppt
- 清华大学:《科技文献检索》课程教学课件(PPT讲稿)Elsevier全文电子期刊说明.ppt
- 清华大学:《科技文献检索》课程教学课件(PPT讲稿)IEEE/IEE Electronic Library(IEL).ppt
- 清华大学:《科技文献检索》课程教学课件(PPT讲稿)科学文摘数据库(INSPEC).ppt
- 清华大学:《科技文献检索》课程教学课件(PPT讲稿)博硕士论文数据库.ppt
- 清华大学:《科技文献检索》课程教学课件(PPT讲稿)机检上课及实习安排.doc
- 清华大学:《科技文献检索》课程教学课件(PPT讲稿)Science Abstracts(SA).ppt
- 清华大学:《科技文献检索》课程教学课件(PPT讲稿)科学引文索引.ppt
- 清华大学:《科技文献检索》课程教学资源(学习资料)参考课题.doc
- 《计算机应用技术基础》第五章 创建图表体验数据功析效果.ppt
- 《计算机应用技术基础》第三章 制作会议日程表.ppt
- 《计算机应用技术基础》第一章 计算机基础知识.ppt
- 《计算机应用技术基础》第七章 用图表进行数据分析.ppt
- 《计算机应用技术基础》第二章 开始使用 Windows.ppt
- 《计算机应用技术基础》第六章 快速、规范地制作公文.ppt
- 《计算机应用技术基础》第五章 Word的其他功能.ppt