c++远征之多态篇——异常处理
以下内容源于慕课网的学习整理,如有侵权,请告知删除。
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++远征之多态篇——异常处理相关推荐
- 慕课网-C++远征之多态篇(中)-学习笔记
c++远征之多态篇 纯虚函数 & 抽象类 例子: class Shape { public:virtual double calcArea()//虚函数{return 0;}virtual d ...
- c++远征之多态篇——虚函数及其实现原理
以下内容源于慕课网的学习整理,如有侵权,请告知删除. 1.多态的定义 简单理解,就是对于同一条命令,不同对象会做出不同的操作. 相同对象收到不同消息,或者不同对象收到相同消息时,产生不同的动作. 2. ...
- c++远征之多态篇——运行时类型识别(RTTI)
以下内容源于慕课网的学习整理,如有侵权,请告知删除. 1.RTTI(Run-Time Type Information),运行时类型识别. 涉及typeid.dynamic_cast这两个知识点. R ...
- c++远征之多态篇——纯虚函数和抽象类、接口类
以下内容源于慕课网的学习整理,如有侵权,请告知删除. 1.纯虚函数 没有函数体: =0: 即只有函数声明,而没有函数定义的虚函数,是纯虚函数. 2.抽象类 概念:含有纯虚函数的类,叫抽象类. 抽象类无 ...
- 10-C++远征之模板篇-学习笔记
C++远征之模板篇 本文及代码收录于个人编程笔记(整理中,欢迎Star): https://github.com/mtianyan/Programming-Notebook 将会学到的内容: 模板函数 ...
- Guru of the Week 条款08:GotW挑战篇——异常处理的安全性 (转)
Guru of the Week 条款08:GotW挑战篇--异常处理的安全性 (转)[@more@] GotW #08 CHALLENGE EDITION Exception Safety 著者:H ...
- java静态多态实例_[后续] Java 中类的实例化过程之多态篇--(终于发现Java 原来是这样则的玩的)...
这篇博文依然和大家分享Java 类的实例化过程 值多态篇.和往常一样,直接来上这这阿里的道面试题: 父类的声明如下所示: 1 public classParentD {2 //1.类变量进行初始化 3 ...
- 【何不三连】JS面向对象最后一弹-多态篇(羽化升仙)
前言 你盼世界,我盼望你无bug.Hello 大家好!我是霖呆呆! 首先抱歉让大家久等了,大家一直期待的"多态"篇到现在才来 ????,其实我最近挺忙的,给张手机截图让大家感受一下 ...
- 【Python入门教程】第52篇 异常处理之try…except
本篇我们将会学习如何使用 try-except 语句处理程序中的异常. Python 中存在两种类型的错误:语法错误(syntax error)和异常(exception). 语法错误 当我们编写了无 ...
最新文章
- table表格细边框
- ajaxToolkit发布之后出错!说未能加载文件或程序集!
- 学习笔记Hadoop(九)—— Hadoop基础操作(1)—— Hadoop安全模式、Hadoop集群基本信息
- Linux从零开始(三、命令图解)
- git 修改分支名字_大牛总结的 Git 使用技巧,写得太好了!
- NB模组基本AT指令
- Linux系统编程31:进程信号之什么是信号的阻塞及相关术语(递达,未决,pending位图,handler位图)
- 局域网访问提示无法访问检查拼写_关于海康视频监控异地访问设置一些细节的说明...
- 线性规划 整数规划 01规划
- ISO9000标准简介
- S7Comm Plus 协议研究
- chrome边解析Html边显示,谷歌浏览器插件侧边翻译Edge Translate
- 九龙证券|外资放大招,400亿巨头狂飙!这只翻倍股却突然崩了
- 拥有十多年欧美金融行业经验,他曾任硅谷Top2互联网金融公司Prosper核心高管,突然回国,究竟是为何?
- UEFI启动模式下, 双硬盘安装UBuntu16.04与Win10双系统
- CDN边缘智能助力5G
- PHP 获取客户端 IP 地址
- 【自然语言处理基础技能(NLP)】jieba中文文本处理
- cmd操作MySQL 多表查询(日记 day 4)
- sdkman 管理开发中使用的sdk
热门文章
- [WPF]xml序列化以及反序列化数据
- Windows数据库编程接口简介
- WPF的二维绘图(一)——DrawingContext
- 正则提取的url中的域名以及替换域名的方法 preg_match()和preg_replace()
- spring心得6--自动装配知识点讲解及案例分析
- [转]四边形不等式优化dp(POJ1160)
- 搜索连接字符串存储过程【原创】
- python3 实现对比conf 文件差异
- 15-CSS基础-浮动流
- 服务器上装filezilla server后,本地的ftp客户端连接不上去