C++语言程序设计进阶 (11).pdf

上传人:刘静 文档编号:52867616 上传时间:2022-10-24 格式:PDF 页数:7 大小:303.41KB
返回 下载 相关 举报
C++语言程序设计进阶 (11).pdf_第1页
第1页 / 共7页
C++语言程序设计进阶 (11).pdf_第2页
第2页 / 共7页
点击查看更多>>
资源描述

《C++语言程序设计进阶 (11).pdf》由会员分享,可在线阅读,更多相关《C++语言程序设计进阶 (11).pdf(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、 第 12 章 异常处理 本章主要内容 异常处理的基本思想与程序实现 异常处理中的构造与析构 标准程序库异常处理 小结 异常处理的思想与程序实现 异常处理的基本思想 异常处理的语法 例12-1处理除零异常/12_1.cpp#include using namespace std;int divide(int x,int y)if(y=0)throw x;return x/y;int main()try cout 5/2=divide(5,2)endl;cout 8/0=divide(8,0)endl;cout 7/1=divide(7,1)endl;catch(int e)cout e is

2、divided by zero!endl;cout That is ok.endl;return 0;异常接口声明 一个函数显式声明可能抛出的异常,有利于函数的调用者为异常处理做好准备 可以在函数的声明中列出这个函数可能抛掷的所有异常类型。例如:void fun()throw(A,B,C,D);若无异常接口声明,则此函数可以抛掷任何类型的异常。不抛掷任何类型异常的函数声明如下:void fun()throw();异常处理中的构造与析构 自动的析构 找到一个匹配的catch异常处理后 初始化异常参数。将从对应的try块开始到异常被抛掷处之间构造(且尚未析构)的所有自动对象进行析构。从最后一个ca

3、tch处理之后开始恢复执行。例 12-2 带析构语义的类的 C+异常处理/12_2.cpp#include#include using namespace std;class MyException public:MyException(const string&message):message(message)MyException()const string&getMessage()const return message;private:string message;class Demo public:Demo()cout Constructor of Demo endl;Demo()c

4、out Destructor of Demo endl;void func()throw(MyException)Demo d;cout Throw MyException in func()endl;throw MyException(exception thrown by func();int main()cout In main function endl;try func();catch(MyException&e)cout Caught an exception:e.getMessage()endl;cout Resume the execution of main()endl;re

5、turn 0;运行结果:In main function Constructor of Demo Throw MyException in func()Destructor of Demo Caught an exception:exception thrown by func()Resume the execution of main()标准程序库异常处理 标准异常类的继承关系 C+标准库各种异常类所代表的异常 标准异常类的基础 exception:标准程序库异常类的公共基类 logic_error表示可以在程序中被预先检测到的异常 如果小心地编写程序,这类异常能够避免 runtime_er

6、ror表示难以被预先检测的异常 例 12-3 三角形面积计算 编写一个计算三角形面积的函数,函数的参数为三角形三边边长a、b、c,可以用Heron公式计算:设 2abcp,则三角形面积 Sppapbpc/12_3.cpp#include#include#include using namespace std;/给出三角形三边长,计算三角形面积 double area(double a,double b,double c)throw(invalid_argument)/判断三角形边长是否为正 if(a=0|b=0|c=0)throw invalid_argument(the side lengt

7、h should be positive);/判断三边长是否满足三角不等式 if(a+b=c|b+c=a|c+a=b)throw invalid_argument(the side length should fit the triangle inequation);/由Heron公式计算三角形面积 double s=(a+b+c)/2;return sqrt(s*(s-a)*(s-b)*(s-c);int main()double a,b,c;/三角形三边长 cout a b c;try double s=area(a,b,c);/尝试计算三角形面积 cout Area:s endl;cat

8、ch(exception&e)cout Error:e.what()endl;return 0;运行结果1:Please input the side lengths of a triangle:3 4 5 Area:6 运行结果2:Please input the side lengths of a triangle:0 5 5 Error:the side length should be positive 运行结果2:Please input the side lengths of a triangle:1 2 4 Error:the side length should fit the triangle inequation 小结 主要内容 异常处理的基本思想、C+异常处理的实现、异常处理中的构造与析构 达到的目标 简单了解C+的异常处理机制

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁