电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本
换一换
首页 金锄头文库 > 资源分类 > PPT文档下载
分享到微信 分享到微博 分享到QQ空间

C++语言程序设计教程 第2版 普通高等教育“十一五”国家级规划教材 教学课件 ppt 作者 吕凤翥 王树彬_ 第13章 异常处理和命名空间

  • 资源ID:89343012       资源大小:562.50KB        全文页数:32页
  • 资源格式: PPT        下载积分:10金贝
快捷下载 游客一键下载
账号登录下载
微信登录下载
三方登录下载: 微信开放平台登录   支付宝登录   QQ登录  
二维码
微信扫一扫登录
下载资源需要10金贝
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
1、金锄头文库是“C2C”交易模式,即卖家上传的文档直接由买家下载,本站只是中间服务平台,本站所有文档下载所得的收益全部归上传人(卖家)所有,作为网络服务商,若您的权利被侵害请及时联系右侧客服;
2、如你看到网页展示的文档有jinchutou.com水印,是因预览和防盗链等技术需要对部份页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有jinchutou.com水印标识,下载后原文更清晰;
3、所有的PPT和DOC文档都被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;下载前须认真查看,确认无误后再购买;
4、文档大部份都是可以预览的,金锄头文库作为内容存储提供商,无法对各卖家所售文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;
5、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据;
6、如果您还有什么不清楚的或需要我们协助,可以点击右侧栏的客服。
下载须知 | 常见问题汇总

C++语言程序设计教程 第2版 普通高等教育“十一五”国家级规划教材 教学课件 ppt 作者 吕凤翥 王树彬_ 第13章 异常处理和命名空间

第13章 异常处理和命名空间,13.1 异常处理,异常是指程序在运行过程中遇到的不正常情况。 异常处理是指程序中独立开发的各部分能够就程序异常进行相互通信,并处理这些问题。 通过异常处理,可以将检测问题和解决问题分离,程序的某部分能够检测本部分无法解决的问题并将问题传递给准备处理问题的其他部分。,13.1 异常处理,C+采取这样的方法进行异常处理:正在执行的函数出现了异常,如果此函数不能处理,就抛出异常并传给它的调用函数,调用函数捕捉到异常后进行处理;如果调用函数也不能处理,则再逐级向上传递,直至异常被处理完毕为止,或者在都无法处理的情况下终止程序的执行。,13.1 异常处理,13.1.1 C+的异常处理机制,1语法格式,C+的异常处理机制包括try(检查)、throw(抛出)和catch(捕捉)等3个部分。 throw语句的一般语法格式为: throw ; throw是关键字,其后紧接一个表达式。这个表达式表示异常类型(也称异常信息)。,1语法格式,throw语句可以没有表达式,语法格式为: throw; 如果一个函数中出现这条语句,表示此函数不处理异常,而是把异常再次抛出(即重抛出异常),传递给其上一级类或者函数。 这个语句只能出现在catch语句之中。但如果开始不抛出异常,重抛出异常要调用系统定义的函数terminate()。,1语法格式,try-catch语句是一个整体,catch语句块必须紧跟在try语句块之后,不能单独使用,二者之间不能插入其他语句。在try语句块出现之前,不能出现catch语句块。 try-catch语句的一般语法格式为: try 被检查的语句 catch (异常类型参数 ) 异常处理语句,1语法格式,catch后面的圆括号中只能有一个形参,但该形参是可选的,所以一般只写异常的类型。但在捕获异常的同时还要利用throw抛出的值,catch就必须带有参数,表示指定变量或类对象。如: catch(int y) cout“throw“y; 如果不想得到一个拷贝值,而是希望获得表达式本身的值,则需把catch的参数声明为引用。如:catch(int &),1语法格式,try-catch语句的进一步说明: 一个函数可以只有try语句块而无catch语句块,也就是在此函数中只检查并不处理,把catch语句块放在其他函数中。,1语法格式,try-catch语句的进一步说明: 一个try-catch语句中只能有一个try语句块,但却可以有多个catch语句块,以便与不同的异常类型匹配。catch只检查所捕捉异常的类型,并不检查它们的值,这也是为什么对于不同异常throw必须抛出不同类型异常的原因。,1语法格式,try-catch语句的进一步说明: 如果catch语句块的格式为: catch () 异常处理语句 表示捕捉任何类型的异常,但必须放在try-catch结构中的最后,相当于“其他”。如果把它作为第一个catch子句,则后面的catch子句都不起作用。catch ()语句可以单独使用。,1语法格式,try-catch语句的进一步说明: try-catch语句可以与throw出现在同一个函数中,也可以不在同一个函数中。,1语法格式,try-catch语句的进一步说明: C+只处理放在try语句块中的异常,可以理解为这些异常被监控,那些不在监控之中的异常C+是不会处理的。因此对于可能发生异常的程序段,必须放在try语句块中,否则不起作用。 见书中例13.1 、例13.2 、例13.3、例13.4 。,2异常规范,异常规范的语法格式为: 返回值类型 函数名(形参列表) throw (异常类型1,异常类型2,异常类型3,) 如:double divide(int dividend, int divisor) throw (Div_Exception),2异常规范,异常规范只是给出了一个函数抛出异常的范围,在函数体中仍要指定抛出类型,否则异常声明不起作用。 如果一个函数抛出了异常规约范围之外的异常,会调用系统函数unexpected(),从而保证程序的运行。,2异常规范,异常类型为空的异常规范表示函数不抛出任何异常,但该函数仍能抛出异常,而且同样调用系统函数unexpected()。如: double divide(int dividend, int divisor) throw() 不带异常规范的函数可以抛出任何异常。如: double divide(int dividend, int divisor),如果异常类型是类的类型,则可以根据需要自行定义异常类,也可以使用C+标准库中的异常类。 异常类是一个层次结构,即异常类存在继承关系。 见书中例13.5。,13.1.2 异常与继承,构造函数没有返回类型,在其执行过程中出现的错误无法通过返回值来报告运行状态,只有强行终止或通过异常来处理。 如果在初始化类对象时构造函数发生了异常,则该类对象可能只是部分地被构造:一些成员可能已经被初始化,而另外一些成员在异常发生之前还没有被初始化。,13.1.3 构造函数和析构函数的异常处理,如果系统没有完整地创建一个类对象,系统不会调用析构函数来释放它,这样构造函数发生异常前所创建的类对象成员有时不被释放。 构造函数的异常处理方法是:在构造函数发生异常时,需要保证已创建的类对象成员能够被释放,然后才抛出异常。,13.1.3 构造函数和析构函数的异常处理,对于析构函数的异常,可以使用与一般异常同样的方法去处理。但析构函数发生异常时,如果异常之后还有释放类对象成员的语句,这些语句将不会被执行,从而导致内存的泄漏。 析构函数一般不抛出异常。 见书中例13.6。,13.1.3 构造函数和析构函数的异常处理,13.2 命名空间,命名空间的一般定义格式为: namespace /命名空间成员说明 ,13.2.1 命名空间的定义和使用方法,命名空间的作用是建立一些互相分隔的作用域,分隔一些全局实体,避免产生名字冲突。可以根据需要设置许多个命名空间,每个命名空间名标识一个不同的命名空间域,不同的命名空间不能同名。这样,就可以把不同库中的实体放到不同的命名空间中。,命名空间成员的作用域就局限在该命名空间范围内。当在一个命名空间外使用该命名空间的成员时,必须用命名空间名与作用域运算符“:“来限定,即:。,C+允许使用没有名字的命名空间。在无名命名空间中说明的标识符,使用时无法加命名空间名限定,因此在其他文件中无法引用,只能在本文件的作用域内使用它们。如: namespace int x,y; int fun(int a, int b) return a*b; ,命名空间是可以嵌套的,即在一个命名空间的内部定义另外一个命名空间,形成多个层次的作用域。当从外部访问内层命名空间的成员时,需要使用多个作用域运算符。如: namespace rectangle int area; namespace size int length; int width; ,命名空间的定义可以是不连续的,C+允许将同一个命名空间中的定义和声明分开在多个文件里,也可以在同一个文件中分成许多段。命名空间由它的分离定义的总和构成,这些声明和定义最终都属于同一个命名空间。这样就可以随时把新的成员加入到已有的命名空间中去。无名的命名空间可以在给定文件中不连续,但不能跨越文件。 见书中例13.7、例13.8。,利用using语句访问命名空间成员的格式为: using namespace ; 或者 using :;,13.2.2 简化使用命名空间成员,1. 用using语句访问命名空间成员,为命名空间取别名的格式如下: namespace = ; 如: namespace PC = PersonalComputerNamespaceNameUsedinSetProject; 只能给已经定义的命名空间名取别名,如果是未定义的命名空间名字将会出错。 见书中例13.9。,2. 使用命名空间的别名,13.2.3 标准命名空间,为了避免C+标准库中的标识符与程序中的全局标识符之间、不同库中的标识符之间的同名冲突,C+标准库的所有标识符都定义在一个名为std的命名空间中 。,13.2.3 标准命名空间,根据命名空间的定义和其成员的使用方法,使用C+标准库中的任何标识符都可以用以下三种方式: (1) 直接指定标识符 如std:cout、std:cin。程序中的一个完整语句可以是:std:cout 100std:endl;,13.2.3 标准命名空间,(2) 使用using语句 如: using std:cout; using std:endl; 有了上面两条语句,(1)中的语句可以写成: cout 100 endl;,13.2.3 标准命名空间,(3)用using语句对命名空间std进行声明 如: #include #include using namespace std; 有了using namespace std;语句对命名空间std的声明,就可以直接访问std命名空间的所有成员,不必对std命名空间中的每个成员一一处理。,13.2.3 标准命名空间,如果按照是否使用命名空间,C+标准库可以分为两类库,两种用法是等价的,可以任选。 与C兼容 使用命名空间std #include #include #include #include using namespace std;,作业题和上机练习题,

注意事项

本文(C++语言程序设计教程 第2版 普通高等教育“十一五”国家级规划教材 教学课件 ppt 作者 吕凤翥 王树彬_ 第13章 异常处理和命名空间)为本站会员(E****)主动上传,金锄头文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即阅读金锄头文库的“版权提示”【网址:https://www.jinchutou.com/h-59.html】,按提示上传提交保证函及证明材料,经审查核实后我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.