使用throw抛出异常
本人节选自《21天学通C++》一书

抛出异常(也称为抛弃异常)即检测是否产生异常,在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抛出异常相关推荐

  1. 21天学通python第二版-电子工业出版社-网上书店

    本书全面.系统.深入地讲解了 Python 编程基础语法与高级应用.在讲解过程中,通过大量实际操作的实例将 Python 语言知识全面.系统.深入地呈现给读者.此外,作者专门为本书录制了大量的配套教学 ...

  2. 21天学通python-21天学通python

    21天学通python全面.系统.深入地讲解了Python编程基础语法与高级应用.自从计算机诞生之日起,编程就是计算机相关工作的一部分,如今编程不再只是与计算机有关的工作,它已经渗透到社会生成的各个领 ...

  3. 《21天学通C++(第7版)》——12.8 作业

    本节书摘来自异步社区出版社<21天学通C++(第7版)>一书中的第12章,第12.8节,作者: [美]Siddhartha Rao, [德]Nicolai M. Josuttis,更多章节 ...

  4. 21day学通python epub_21天就让你掌握Python语言,《21天学通Python》PDF版送给你去学...

    Python的学习书籍小编看过很多,但是这本<21天学通Python>真的是堪称极品! 本书的作者团队成员为一线开发工程师.资深编程专家或专业培训师,在编程开发方面有着丰富的经验,并已出版 ...

  5. 21天学通python pdf-21天学通Python PDF百度网盘资源下载

    提取码:gr0z 内容简介  · · · · · · <21天学通Python>全面.系统.深入地讲解了Python编程基础语法与高级应用.在讲解过程中,通过大量实际操作的实例将Pytho ...

  6. 21天精通python-21天学通Python 完整pdf扫描版[58MB]

    21天学通Python全面.系统.深入地讲解了Python编程基础语法与高级应用.在讲解过程中,通过大量实际操作的实例将Python语言知识全面.系统.深入地呈现给读者.此外,作者专门为本书录制了大量 ...

  7. java throw抛出异常

    1.throws关键字通常被应用在声明方法时,用来指定可能抛出的异常.多个异常可以使用逗号隔开.当在主函数中调用该方法时,如果发生异常,就会将异常抛给指定异常对象.如下面例子所示: public cl ...

  8. 8天学通MongoDB——第五天 主从复制

    随笔 - 218  文章 - 1  评论 - 3819 8天学通MongoDB--第五天 主从复制 从这一篇开始我们主要讨论mongodb的部署技术. 我们知道sql server能够做到读写分离,双 ...

  9. 24小时学通linux视频教程下载

    24小时学通linux视频教程下载 <楚广明24小时学通linux>引用:伏了好长时间,今天总算又一次的为大家带来一点点儿新东西,准备了一段时间后我为大家推了这一套24小时学通linux系 ...

  10. 21天学通HTML5和CSS3第二版,21天学通HTML5+CSS3

    本书全面.系统.深入地讲解了HTML5+CSS3网页设计与编程的基础语法与高级应用.在讲解过程中,通过大量取自实际操作的实例,将网页开发知识全面.系统.深入地呈现给读者.此外,作者专门为本书录制了大量 ...

最新文章

  1. DataBind 踩坑事件
  2. android 不同型号的终端的UI适配--一种解决方法
  3. hdu 6086 -- Rikka with String(AC自动机 + 状压DP)
  4. mysql创建约束时的约束名称,MySQL唯一键约束
  5. YEAH!!距离拿回touch4倒计时:7days
  6. Linux vsFTPd服务详解——文件加密传输配置
  7. Flutter入门(2)—创建项目
  8. 解决:网络风暴引起的无法ping通
  9. php的vr视频教程,1分钟教会你:如何用手机观看VR视频
  10. 2019最新领航Java机器人项目开发之人工智能项目实战(完整)
  11. cad有没有网页版_电脑中好用的免费CAD查看软件 满满的干货
  12. 升降压电路的设计和分析
  13. NXOPEN/UG二次开发C#---获取NX的版本
  14. php 支付宝订单查询_PHP接入支付宝单笔订单查询接口
  15. 我的世界JAVA挂机杀怪有经验_5分钟教你打造mc最简单的刷经验机!挂机就能无限经验?...
  16. C语言输出领结婚证纪念日,领证比较有纪念意义的日子
  17. FPGA开发基本流程
  18. CTF之做题总结(一)
  19. catia螺纹孔在二维图上不显示_请问Solidworks2018的螺纹孔我选中了装饰螺纹线,立体图里怎么没有显示螺纹线呢谢谢...
  20. Dell PowerEdge T140服务器安装系统笔记

热门文章

  1. 【二分答案】【NOIP模拟10-21】的士碰撞
  2. Django_xamin注册model错误
  3. JAVA入门[5]-初步搭建SpringMVC站点
  4. JS原型链原理(链表)
  5. 用面对对象方式定tab标签
  6. java中整数和字符串间的转换方法
  7. NSXMLParser详解(事例)
  8. IAR使用技巧 之 快捷键批量更换指定字符(以及Keil的全局替换功能)
  9. VirtualBox6.0安装及配置
  10. WPF 打印不显示的元素