文档详情

Visual C++ 6.0实例教程(第二版) 杨国兴 第8章 异常处理和诊断新.ppt

发布:2015-12-15约1.8千字共12页下载文档
文本预览下载声明
第8章 异常处理和诊断 学习目标 8.1 处理C++异常 8.2 MFC异常类 1. 例:CFileException 2. CFileException的例子 3. ReportError()的例子 8.3 诊断服务 1. ASSERT 2. VERIFY 3. TRACE 小结 C++异常 MFC异常类 诊断服务 ASSERT VERIFY TRACE 处理C++异常 使用MFC异常类捕获程序异常 使用MFC提供的用于诊断程序的宏调试程序 (1)try块:标志可能会出现异常的代码。 (2)catch块:紧跟着try块,里面包含了处理异常的代码。 (3)throw块 :抛出一个异常,激活catch块中相应的异常处理代码。 第8章 异常处理和诊断 1. 用于异常处理的3个关键字 2. 异常处理实例 第8章 异常处理和诊断 第8章 异常处理和诊断 8.2 MFC异常类 三个成员变量: m_cause:包含与错误原因对应的代码。 m_lOsError:包含相关的操作系统错误码。 m_strFileName:包含出现异常的文件名。 第8章 异常处理和诊断 8.2 MFC异常类 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章 异常处理和诊断 8.2 MFC异常类 CFile fileInput; CFileException ex; if (!fileInput.Open(\\Too\\Many\\Bad\\Dirs.DAT, CFile::modeRead, ex)) { //打开文件失败 ex.ReportError(); } else { // 打开文件成功 fileInput.Close(); } 第8章 异常处理和诊断 MFC提供的用于诊断程序的宏有:ASSERT、ASSERT_KINDOF、ASSERT_VALID、DEBUG_NEW、TRACE、TRACE0、TRACE1、TRACE2、TRACE3、VERIFY。 第8章 异常处理和诊断 8.3 诊断服务 ASSERT( boolean Expression ); 如果参数不为真,这个宏就显示一个诊断信息对话框,并终止程序的运行。如果参数为真,它不做任何事情。 ASSERT仅在MFC的调试(Debug)版本中有效,在MFC的发布(Release)版本中,ASSERT语句不再有效。 第8章 异常处理和诊断 VERIFY( boolean Expression ) ; 如果参数不为真,这个宏就显示一个诊断信息对话框,并终止程序的运行。如果参数为真,它不做任何事情。 在MFC的发布版本中,它仍对参数进行测试,但是当参数为假时,不弹出诊断信息对话框。 8.3 诊断服务 第8章 异常处理和诊断 TRACE( exp ); TRACE是一个在程序运行时跟踪变量数值的便捷方法,它的用法和Printf完全相同,他的输出是Debug窗口。如: int m_value=100; for(int i=0;i5;i++) { m_value++; TRACE(m_value = %d, m_value); } 8.3 诊断服务 第8章 异常处理和诊断
显示全部
相似文档