当前课程知识点:C++语言程序设计进阶 >  第十二章 异常处理 >  标准程序库异常处理 >  标准程序库异常处理

返回《C++语言程序设计进阶》慕课在线视频课程列表

标准程序库异常处理在线视频

标准程序库异常处理

标准程序库异常处理

标准异常类的继承关系

12-3.png

C++标准库各种异常类所代表的异常

12-4.png

标准异常类的基础

例12-3 三角形面积计算



下一节:第12章小结

返回《C++语言程序设计进阶》慕课在线视频列表

标准程序库异常处理课程教案、知识点、字幕

大家好

欢迎继续学习C++语言程序设计

这一节我们来学习

C++标准库异常处理

在C++标准库中预先定义好了

很多与异常处理相关的类

我们可以直接使用这些异常类

也可以继承这些异常类

来形成我们自己

自定义的异常类

接下来我们就通过一个图

来观察一下

C++标准库中这些异常类

它们之间的继承关系

我们看到这个图中

列出了C++标准库中

标准异常类

它们之间的继承关系

我们看到exception

是所有异常类的基类

在它之下呢

又派生出不同的异常类

有一些类

在我们的例题中大家会见到

那么更多的呢

大家如果需要了解

可以去查阅C++的语法手册

这个表中

列出了标准库中

各种异常类它所代表的异常

这里异常的含义

它只是一个简要的说明

大家可以参考这个说明

尝试着去使用这个异常类

这里也列出了头文件

还是那句话

如果希望详细地了解呢

大家需要去参考

C++类库的说明

在C++库中有三个异常类

是其他标准异常类的基础

这三个类是excption logic_error

和runtime_error

exception

是所有异常类的公共基类

那么logic_error表示

可以在程序中

被预先检测到的异常

而且如果小心地编写程序

那么这类异常呢

应该能够避免

runtime_error表示

难以被预先检测到的异常

下面我们来看一个例题

计算三角形的面积

在这个例题中

要写一个函数

来计算三角形的面积

但是如果给出的三个边的边长

不符合构成一个三角形的要求

那么这个面积当然就计算不了

这种情况下呢

就会引发异常

这个时候我们来看

程序中是如何处理这个异常的

这是题目的要求

在题目中呢

给出了三角形面积的计算公式

我们来编程实现它

看看程序中发生异常 怎么办

这个程序通过函数area

来计算三角形的面积

它的参数就是

接收的是三角形的三个边的边长

当然首先它必须判断

给的三个边长是合法数据

才能进行这个面积的计算

如果这个边长不是都为正数

有得负数的

那么当然

就不是合法的三角形边长

就要抛出一个invalid_argument

这个异常对象

这个类型的异常呢

是标准异常类

它的括号里面的参数

是一个字符串

通常我们用这个字符串来表示

到底发生了什么

来说明这个异常

如果三角形的三个边长

它不符合

三角形的这种不等式要求

那这种情况下呢

也抛出一个invalid_argument异常

同样

在参数中用字符串

给出这一次的异常原因

只有当数据合法的时候

才来计算三角形面积

然后将计算结果正常返回

现在我们看主函数中

输入三角形的三个边长

然后就用这三个数据作为参数

去调用area

因为area这个函数

它是声明了有可能抛出

invalid_argument类型异常的

所以我们就要把它放在

这个try块里面

准备

如果它一旦发生了异常

抛出了异常

那么就有catch子句

去捕获这个异常

捕获异常的类型是什么呢

是exception类型

exception类型

是invalid_argument的复类

上它的上级的基类

所以呢

我们笼统地按照

这个最顶上的基类

exception类型去捕获

是能够捕获到这个异常的

当异常抛出的时候

这个area函数

就不会正确执行到结束的位置

就会在抛出异常的地方

终止执行

然后回到调用它的这个函数

也就是主函数中

那么如果

area没有能够正常返回的话

也就不会再执行这个赋值

也就不会再执行底下的输出

那么这个抛出的异常

就会立刻被catch子句捕获

然后在这儿我们调用

exception的what这个函数

就能够返回那个字符串

因此我们就可以将这个字符串

输出给用户看

让它知道异常它的原因是什么

我们看运行时候的情况

如果我们输入的数据是合法的

就计算出正确结果来

如果输出的数据是不合法的

那么因为抛出异常

终止的程序的执行

就没有正确计算出结果

但是我们会看到

这个地方

通过

我们异常对象里面这个字符串

将异常的原因展示给用户了

C++语言程序设计进阶课程列表:

第七章 继承与派生

-导学

--导学

-继承的基本概念和语法

--继承的基本概念和语法

-第七章 继承与派生--继承的基本概念和语法习题

-继承方式

--继承方式简介及公有继承

--私有继承和保护继承

-第七章 继承与派生--继承方式

-基类与派生类类型转换

--基类与派生类类型转换

-第七章 继承与派生--基类与派生类类型转换

-派生类的构造和析构

--派生类的构造函数

--派生类的构造函数举例

--派生类的复制构造函数

--派生类的析构函数

--第七章 继承与派生--派生类的构造和析构

-派生类成员的标识与访问

--访问从基类继承的成员

--虚基类

-第七章 继承与派生--派生类成员的标识与访问

-小结

--小结

-综合实例

--第七章综合实例

-实验七

--实验七

-第七章讲义

第八章 多态性

-导学

--导学

-第八章 多态性--导学

-运算符重载

--运算符重载的规则

--双目运算符重载为成员函数

--单目运算符重载为成员函数

--运算符重载为非成员函数

-第八章 多态性--运算符重载

-虚函数

--虚函数

--虚析构函数

--虚表与动态绑定

-第八章 多态性--虚函数

-抽象类

--抽象类

--第八章 多态性--抽象类

-override与final

--override与final

-第八章 多态性--override与final

-小结

--第八章小结

-综合实例

--第八章综合实例

-实验八

--实验八

- 第八章讲义

第九章 模板与群体数据

-导学

--导学

-模板

--函数模板

--类模板

-第九章 模板与群体数据--模板

-线性群体

--线性群体的概念

-第九章 模板与群体数据--线性群体

-数组

--数组类模板

--例9-4数组类应用举例

-链表

--链表的概念与结点类模板

--链表类模板

-第九章 模板与群体数据--链表

-栈

--栈类模板

--栈类模板课后习题

--例9-9 栈的应用

--例9-9 栈的应用课后习题

-队列

--队列类模板

-第九章 模板与群体数据--队列

-排序

--排序概述

--插入排序

--选择排序

--交换排序

-第九章 模板与群体数据--排序

-查找

--查找

--查找课后习题

-小结

--小结

-综合实例

--综合实例

-实验九

--实验九

- 第九章讲义

第十章 泛型程序设计与C++标准模板库

-导学

--导学

-泛型程序设计及STL的结构

--泛型程序设计的基本概念

--STL简介

-第十章 泛型程序设计与C++标准模板库--泛型程序设计及STL的结构

-迭代器

--迭代器

-第十章 泛型程序设计与C++标准模板库--迭代器

-容器的基本功能与分类

--容器的基本功能与分类

-第十章 泛型程序设计与C++标准模板库--容器的基本功能与分类

-顺序容器

--顺序容器的基本功能

--顺序容器的特征

--顺序容器的插入迭代器与适配器

--第十章 泛型程序设计与C++标准模板库--顺序容器

-关联容器

--关联容器分类和基本功能

--集合

--映射

--多重集合和多重映射

-第十章 泛型程序设计与C++标准模板库--关联容器

-函数对象

--函数对象

--函数适配器

-算法

--算法

-小结

--第十章小结

-综合实例

--综合实例

-实验十

--实验十

- 第十章讲义

第十一章 流类库与输入/输出

-导学

--导学

-I/O流的概念及流类库结构

--I/O流的概念及流类库结构

-第十一章 流类库与输入/输出--I/O流的概念及流类库结构

-输出流

--输出流概述

--向文本文件输出

--向二进制文件输出

--向字符串输出

-第十一章 流类库与输入/输出--输出流

-输入流

--输入流概述

--输入流应用举例

--从字符串输入

-第十一章 流类库与输入/输出--输入流

-输入/输出流

--输入/输出流

-第十一章 流类库与输入/输出--输入/输出流

-小结

--小结

-综合实例

--综合实例

-实验十一

--实验十一

- 第十一章讲义

第十二章 异常处理

-导学

--第12章导学

-异常处理的思想与程序实现

--异常处理的思想与程序实现

-第十二章 异常处理--异常处理的思想与程序实现

-异常处理中的构造与析构

--异常处理中的构造与析构

-第十二章 异常处理--异常处理中的构造与析构

-标准程序库异常处理

--标准程序库异常处理

-第十二章 异常处理--标准程序库异常处理

-小结

--第12章小结

-综合实例

--综合实例

-实验十二

--实验十二

- 第十二章讲义

标准程序库异常处理笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。