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

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

ID:50041723

大小:562.50 KB

页数:32页

时间:2020-03-08

C++语言程序设计教程 第2版 普通高等教育十一五 国家级规划教材 教学课件 作者 吕凤翥 王树彬_ 第13章 异常处理和命名空间.ppt_第1页
C++语言程序设计教程 第2版 普通高等教育十一五 国家级规划教材 教学课件 作者 吕凤翥 王树彬_ 第13章 异常处理和命名空间.ppt_第2页
C++语言程序设计教程 第2版 普通高等教育十一五 国家级规划教材 教学课件 作者 吕凤翥 王树彬_ 第13章 异常处理和命名空间.ppt_第3页
C++语言程序设计教程 第2版 普通高等教育十一五 国家级规划教材 教学课件 作者 吕凤翥 王树彬_ 第13章 异常处理和命名空间.ppt_第4页
C++语言程序设计教程 第2版 普通高等教育十一五 国家级规划教材 教学课件 作者 吕凤翥 王树彬_ 第13章 异常处理和命名空间.ppt_第5页
资源描述:

《C++语言程序设计教程 第2版 普通高等教育十一五 国家级规划教材 教学课件 作者 吕凤翥 王树彬_ 第13章 异常处理和命名空间.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、13.1异常处理13.2命名空间第13章异常处理和命名空间13.1异常处理异常是指程序在运行过程中遇到的不正常情况。异常处理是指程序中独立开发的各部分能够就程序异常进行相互通信,并处理这些问题。通过异常处理,可以将检测问题和解决问题分离,程序的某部分能够检测本部分无法解决的问题并将问题传递给准备处理问题的其他部分。13.1异常处理C++采取这样的方法进行异常处理:正在执行的函数出现了异常,如果此函数不能处理,就抛出异常并传给它的调用函数,调用函数捕捉到异常后进行处理;如果调用函数也不能处理,则再逐级向上传递,直至异常被处理完毕为止,或者在都无法处

2、理的情况下终止程序的执行。13.1异常处理13.1.1C++的异常处理机制1.语法格式C++的异常处理机制包括try(检查)、throw(抛出)和catch(捕捉)等3个部分。throw语句的一般语法格式为:throw<表达式>;throw是关键字,其后紧接一个表达式。这个表达式表示异常类型(也称异常信息)。1.语法格式throw语句可以没有表达式,语法格式为:throw;如果一个函数中出现这条语句,表示此函数不处理异常,而是把异常再次抛出(即重抛出异常),传递给其上一级类或者函数。这个语句只能出现在catch语句之中。但如果开始不抛出异常,重抛

3、出异常要调用系统定义的函数terminate()。1.语法格式try-catch语句是一个整体,catch语句块必须紧跟在try语句块之后,不能单独使用,二者之间不能插入其他语句。在try语句块出现之前,不能出现catch语句块。try-catch语句的一般语法格式为:try{被检查的语句}catch(异常类型[参数]){异常处理语句}1.语法格式catch后面的圆括号中只能有一个形参,但该形参是可选的,所以一般只写异常的类型。但在捕获异常的同时还要利用throw抛出的值,catch就必须带有参数,表示指定变量或类对象。如:catch(inty)

4、{cout<<"throw"<

5、throw必须抛出不同类型异常的原因。1.语法格式try-catch语句的进一步说明:③如果catch语句块的格式为:catch(…){异常处理语句}表示捕捉任何类型的异常,但必须放在try-catch结构中的最后,相当于“其他”。如果把它作为第一个catch子句,则后面的catch子句都不起作用。catch(…)语句可以单独使用。1.语法格式try-catch语句的进一步说明:④try-catch语句可以与throw出现在同一个函数中,也可以不在同一个函数中。1.语法格式try-catch语句的进一步说明:⑤C++只处理放在try语句块中的异常

6、,可以理解为这些异常被监控,那些不在监控之中的异常C++是不会处理的。因此对于可能发生异常的程序段,必须放在try语句块中,否则不起作用。见书中例13.1、例13.2、例13.3、例13.4。2.异常规范异常规范的语法格式为:返回值类型函数名(形参列表)throw(异常类型1,异常类型2,异常类型3,……)如:doubledivide(intdividend,intdivisor)throw(Div_Exception)2.异常规范异常规范只是给出了一个函数抛出异常的范围,在函数体中仍要指定抛出类型,否则异常声明不起作用。如果一个函数抛出了异常规

7、约范围之外的异常,会调用系统函数unexpected(),从而保证程序的运行。2.异常规范异常类型为空的异常规范表示函数不抛出任何异常,但该函数仍能抛出异常,而且同样调用系统函数unexpected()。如:doubledivide(intdividend,intdivisor)throw()不带异常规范的函数可以抛出任何异常。如:doubledivide(intdividend,intdivisor)如果异常类型是类的类型,则可以根据需要自行定义异常类,也可以使用C++标准库中的异常类。异常类是一个层次结构,即异常类存在继承关系。见书中例13.

8、5。13.1.2异常与继承构造函数没有返回类型,在其执行过程中出现的错误无法通过返回值来报告运行状态,只有强行终止或通过异常来处理。如果

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。