以下内容源于慕课网的学习整理,如有侵权,请告知删除。

1、关于异常的一些概念

异常:程序运行期出现的错误。

  • 数组下标越界;
  • 除数为0;
  • 内存不足;
  • ……

异常处理:对有可能发生异常的地方做出预见性的安排。

异常处理使用的关键字

  • try {   这下面的代码是主体逻辑  }   catch{  这下面的代码异常处理 }
  • throw xxx 抛出异常,其中xxx可以是数字(各种类型的),也可以是类名?

基本思想:主逻辑和异常处理分离。

2、c++中异常处理流程

  • 假设其中f3调用f2,f2调用f1,在f1运行时出现错误。
  • 出现错误时,f1将错误抛给f2解决;
  • 如果f2不能解决,则把错误抛给f3解决;
  • 如果f3也解决不了,则把错误抛给操作系统。
  • 此时操作系统简单粗暴地提示崩溃。

3、细节讲解

  • try中运行fun1的代码,当fun1出现异常时,抛出1,给catch捕捉到,然后判断什么,决定哪种异常处理。

  • 也可能是一对多的关系;
  • 最后catch(…)表示都不匹配时,做的异常处理。这里…表示任何内容。

  • 例子如下
  • 此时在getChar出错,则不会执行cout<<ch<<endl;

4、异常处理和多态的关系

  • 定义一个异常类作为接口类,旗下细分各类异常;
  • 之后出现异常时,都可以用父类去捕获了。

5、代码示例

#include <iostream>
#include <string>
#include <stdlib.h>
using namespace std;/*函数division的两个参数为dividend(被除数)和divisor(除数)
要求用户输入除数和被除数,并作为参数传递给division函数
如果除数为0,则抛出异常,并被捕获,将异常的内容显示到屏幕上
*//*** 定义函数division* 参数整型dividend、整型divisor*/
int division(int dividend, int divisor)
{if(0 == divisor){// 抛出异常,字符串“除数不能为0”throw string("除数不能为0");}else{return dividend / divisor;}
}int main(void)
{int d1 = 0;int d2 = 0;int r = 0;cin >> d1;cin >> d2;// 使用try...catch...捕获异常try{r=division(d1,d2);   }catch(const string& e){// cout<<"除数不能为0"<<endl;cout<<e<<endl;}return 0;
}

c++远征之多态篇——异常处理相关推荐

  1. 慕课网-C++远征之多态篇(中)-学习笔记

    c++远征之多态篇 纯虚函数 & 抽象类 例子: class Shape { public:virtual double calcArea()//虚函数{return 0;}virtual d ...

  2. c++远征之多态篇——虚函数及其实现原理

    以下内容源于慕课网的学习整理,如有侵权,请告知删除. 1.多态的定义 简单理解,就是对于同一条命令,不同对象会做出不同的操作. 相同对象收到不同消息,或者不同对象收到相同消息时,产生不同的动作. 2. ...

  3. c++远征之多态篇——运行时类型识别(RTTI)

    以下内容源于慕课网的学习整理,如有侵权,请告知删除. 1.RTTI(Run-Time Type Information),运行时类型识别. 涉及typeid.dynamic_cast这两个知识点. R ...

  4. c++远征之多态篇——纯虚函数和抽象类、接口类

    以下内容源于慕课网的学习整理,如有侵权,请告知删除. 1.纯虚函数 没有函数体: =0: 即只有函数声明,而没有函数定义的虚函数,是纯虚函数. 2.抽象类 概念:含有纯虚函数的类,叫抽象类. 抽象类无 ...

  5. 10-C++远征之模板篇-学习笔记

    C++远征之模板篇 本文及代码收录于个人编程笔记(整理中,欢迎Star): https://github.com/mtianyan/Programming-Notebook 将会学到的内容: 模板函数 ...

  6. Guru of the Week 条款08:GotW挑战篇——异常处理的安全性 (转)

    Guru of the Week 条款08:GotW挑战篇--异常处理的安全性 (转)[@more@] GotW #08 CHALLENGE EDITION Exception Safety 著者:H ...

  7. java静态多态实例_[后续] Java 中类的实例化过程之多态篇--(终于发现Java 原来是这样则的玩的)...

    这篇博文依然和大家分享Java 类的实例化过程 值多态篇.和往常一样,直接来上这这阿里的道面试题: 父类的声明如下所示: 1 public classParentD {2 //1.类变量进行初始化 3 ...

  8. 【何不三连】JS面向对象最后一弹-多态篇(羽化升仙)

    前言 你盼世界,我盼望你无bug.Hello 大家好!我是霖呆呆! 首先抱歉让大家久等了,大家一直期待的"多态"篇到现在才来 ????,其实我最近挺忙的,给张手机截图让大家感受一下 ...

  9. 【Python入门教程】第52篇 异常处理之try…except

    本篇我们将会学习如何使用 try-except 语句处理程序中的异常. Python 中存在两种类型的错误:语法错误(syntax error)和异常(exception). 语法错误 当我们编写了无 ...

最新文章

  1. table表格细边框
  2. ajaxToolkit发布之后出错!说未能加载文件或程序集!
  3. 学习笔记Hadoop(九)—— Hadoop基础操作(1)—— Hadoop安全模式、Hadoop集群基本信息
  4. Linux从零开始(三、命令图解)
  5. git 修改分支名字_大牛总结的 Git 使用技巧,写得太好了!
  6. NB模组基本AT指令
  7. Linux系统编程31:进程信号之什么是信号的阻塞及相关术语(递达,未决,pending位图,handler位图)
  8. 局域网访问提示无法访问检查拼写_关于海康视频监控异地访问设置一些细节的说明...
  9. 线性规划 整数规划 01规划
  10. ISO9000标准简介
  11. S7Comm Plus 协议研究
  12. chrome边解析Html边显示,谷歌浏览器插件侧边翻译Edge Translate
  13. 九龙证券|外资放大招,400亿巨头狂飙!这只翻倍股却突然崩了
  14. 拥有十多年欧美金融行业经验,他曾任硅谷Top2互联网金融公司Prosper核心高管,突然回国,究竟是为何?
  15. UEFI启动模式下, 双硬盘安装UBuntu16.04与Win10双系统
  16. CDN边缘智能助力5G
  17. PHP 获取客户端 IP 地址
  18. 【自然语言处理基础技能(NLP)】jieba中文文本处理
  19. cmd操作MySQL 多表查询(日记 day 4)
  20. sdkman 管理开发中使用的sdk

热门文章

  1. [WPF]xml序列化以及反序列化数据
  2. Windows数据库编程接口简介
  3. WPF的二维绘图(一)——DrawingContext
  4. 正则提取的url中的域名以及替换域名的方法 preg_match()和preg_replace()
  5. spring心得6--自动装配知识点讲解及案例分析
  6. [转]四边形不等式优化dp(POJ1160)
  7. 搜索连接字符串存储过程【原创】
  8. python3 实现对比conf 文件差异
  9. 15-CSS基础-浮动流
  10. 服务器上装filezilla server后,本地的ftp客户端连接不上去