c++远征之多态篇——异常处理
来源:互联网 发布:亚丝娜的剑数据 编辑:程序博客网 时间:2024/05/29 04:46
以下内容源于慕课网的学习整理,如有侵权,请告知删除。
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;}
阅读全文
0 0
- c++远征之多态篇——异常处理
- C++远征之多态篇
- c++远征之多态篇——虚函数及其实现原理
- c++远征之多态篇——纯虚函数和抽象类、接口类
- c++远征之多态篇——运行时类型识别(RTTI)
- c++远征之多态篇(虚函数)
- c++远征之多态篇(运行时类型识别)
- C++学习之多态篇(异常处理)
- c++远征之多态篇(纯虚函数和抽象类)
- C#-—体验处理异常
- C#——面向对象之多态
- C++远征之封装篇——字符串类型
- c++远征之继承篇——继承方式
- c++远征之模板篇——运算符重载
- java自学笔记之多态 内部类 异常处理
- C++之多态(纯虚函数+RTTI+异常处理)
- 黑马程序员—【Java基础篇】之多态、内部类、异常及包
- 青岛市赛总结——远征石油大学
- xmapp后localhost不能访问
- 拟牛顿法 分析与推导
- Eloquent JavaScript 笔记 十一:A Programming Language
- just blog
- SQL 获取排名排序后的名次
- c++远征之多态篇——异常处理
- getRequestDispatcher()与sendRedirect()的区别
- getopt 模块
- IDEA快捷键设置,选择Eclipse风格的快捷键,自动补全快捷键,关闭当前窗口快捷键Ctrl+W,自动导入设置,引入外部的jar的方式,设置项目字体,设置项目字符集,Maven的方式获取jar
- 19. 将s所指字符串中的所有数字字符移到所有非数字字符之后,并保持数字字符和非数字字符串原有的先后次序。
- Java Socket 编程
- Python-自动发邮件 一
- Oracle如何实现从特定组合中随机读取值
- PHP多台服务器如何共享session