二十一天学通C++之使用throw抛出异常
抛出异常(也称为抛弃异常)即检测是否产生异常,在C++中,其采用throw语句来实现,如果检测到产生异常,则抛出异常。该语句的格式为:
throw 表达式;
如果在try语句块的程序段中(包括在其中调用的函数)发现了异常,且抛弃了该异常,则这个异常就可以被try语句块后的某个catch语句所捕获并处理,捕获和处理的条件是被抛弃的异常的类型与catch语句的异常类型相匹配。由于C++使用数据类型来区分不同的异常,因此在判断异常时,throw语句中的表达式的值就没有实际意义,而表达式的类型就特别重要。
【范例20-2】处理除数为0的异常。该范例将上述除数为0的异常可以用try/catch语句来捕获异常,并使用throw语句来抛出异常,从而实现异常处理,实现代码如代码清单20-2所示。
代码清单20-2
1 #include<iostream.h> //包含头文件
2 #include<stdlib.h>
3 double fuc(double x, double y) //定义函数
4 {
5 if(y==0)
6 {
7 throw y; //除数为0,抛出异常
8 }
9 return x/y; //否则返回两个数的商
10 }
11 void main()
12 {
13 double res;
14 try //定义异常
15 {
16 res=fuc(2,3);
17 cout<<"The result of x/y is : "<<res<<endl;
18 res=fuc(4,0); //出现异常
19 }
20 catch(double) //捕获并处理异常
21 {
22 cerr<<"error of dividing zero./n";
23 exit(1); //异常退出程序
24 }
25 }
【运行结果】在Visual C++中新建一个【C++ Source File】文件,输入上述的代码,编译无误后运行。
【范例解析】上述代码中,在主函数main()的第14~19行中使用了try语句定义异常,其中包含3条有可能出现异常的语句,它们为调用两个数相除的函数。在代码的第20~24行定义了异常处理,即捕获异常后执行该段代码中的语句。此外,在函数fuc()的代码5~8行通过throw语句抛出异常。
注意:一般来说,throw语句通常与try- catch或try-finally语句一起使用,可以使用throw语句显式引发异常。
二十一天学通C++之使用throw抛出异常相关推荐
- 21天学通python第二版-电子工业出版社-网上书店
本书全面.系统.深入地讲解了 Python 编程基础语法与高级应用.在讲解过程中,通过大量实际操作的实例将 Python 语言知识全面.系统.深入地呈现给读者.此外,作者专门为本书录制了大量的配套教学 ...
- 21天学通python-21天学通python
21天学通python全面.系统.深入地讲解了Python编程基础语法与高级应用.自从计算机诞生之日起,编程就是计算机相关工作的一部分,如今编程不再只是与计算机有关的工作,它已经渗透到社会生成的各个领 ...
- 《21天学通C++(第7版)》——12.8 作业
本节书摘来自异步社区出版社<21天学通C++(第7版)>一书中的第12章,第12.8节,作者: [美]Siddhartha Rao, [德]Nicolai M. Josuttis,更多章节 ...
- 21day学通python epub_21天就让你掌握Python语言,《21天学通Python》PDF版送给你去学...
Python的学习书籍小编看过很多,但是这本<21天学通Python>真的是堪称极品! 本书的作者团队成员为一线开发工程师.资深编程专家或专业培训师,在编程开发方面有着丰富的经验,并已出版 ...
- 21天学通python pdf-21天学通Python PDF百度网盘资源下载
提取码:gr0z 内容简介 · · · · · · <21天学通Python>全面.系统.深入地讲解了Python编程基础语法与高级应用.在讲解过程中,通过大量实际操作的实例将Pytho ...
- 21天精通python-21天学通Python 完整pdf扫描版[58MB]
21天学通Python全面.系统.深入地讲解了Python编程基础语法与高级应用.在讲解过程中,通过大量实际操作的实例将Python语言知识全面.系统.深入地呈现给读者.此外,作者专门为本书录制了大量 ...
- java throw抛出异常
1.throws关键字通常被应用在声明方法时,用来指定可能抛出的异常.多个异常可以使用逗号隔开.当在主函数中调用该方法时,如果发生异常,就会将异常抛给指定异常对象.如下面例子所示: public cl ...
- 8天学通MongoDB——第五天 主从复制
随笔 - 218 文章 - 1 评论 - 3819 8天学通MongoDB--第五天 主从复制 从这一篇开始我们主要讨论mongodb的部署技术. 我们知道sql server能够做到读写分离,双 ...
- 24小时学通linux视频教程下载
24小时学通linux视频教程下载 <楚广明24小时学通linux>引用:伏了好长时间,今天总算又一次的为大家带来一点点儿新东西,准备了一段时间后我为大家推了这一套24小时学通linux系 ...
- 21天学通HTML5和CSS3第二版,21天学通HTML5+CSS3
本书全面.系统.深入地讲解了HTML5+CSS3网页设计与编程的基础语法与高级应用.在讲解过程中,通过大量取自实际操作的实例,将网页开发知识全面.系统.深入地呈现给读者.此外,作者专门为本书录制了大量 ...
最新文章
- DataBind 踩坑事件
- android 不同型号的终端的UI适配--一种解决方法
- hdu 6086 -- Rikka with String(AC自动机 + 状压DP)
- mysql创建约束时的约束名称,MySQL唯一键约束
- YEAH!!距离拿回touch4倒计时:7days
- Linux vsFTPd服务详解——文件加密传输配置
- Flutter入门(2)—创建项目
- 解决:网络风暴引起的无法ping通
- php的vr视频教程,1分钟教会你:如何用手机观看VR视频
- 2019最新领航Java机器人项目开发之人工智能项目实战(完整)
- cad有没有网页版_电脑中好用的免费CAD查看软件 满满的干货
- 升降压电路的设计和分析
- NXOPEN/UG二次开发C#---获取NX的版本
- php 支付宝订单查询_PHP接入支付宝单笔订单查询接口
- 我的世界JAVA挂机杀怪有经验_5分钟教你打造mc最简单的刷经验机!挂机就能无限经验?...
- C语言输出领结婚证纪念日,领证比较有纪念意义的日子
- FPGA开发基本流程
- CTF之做题总结(一)
- catia螺纹孔在二维图上不显示_请问Solidworks2018的螺纹孔我选中了装饰螺纹线,立体图里怎么没有显示螺纹线呢谢谢...
- Dell PowerEdge T140服务器安装系统笔记