C++查缺补漏之异常(续)
此文是文章《C++查缺补漏之异常》:http://blog.csdn.net/ii1245712564/article/details/44617881的后续
1.异常的重新抛出
#include <iostream>
using namespace std;class A
{
public:A(int _number):number(_number){};int number;
};void testFunc()
{try{throw A(10);}catch(A & err){cout<<"In the testFunc the number is :"<<err.number<<endl;err.number =11;throw ;//rethrow the execption }
}int main(int argc, char const *argv[])
{try{testFunc();}catch(A & err){cout<<"In the main Function the number is:"<<err.number<<endl;}while(1);return 0;
}
运行结果为:
2.捕获所有异常的处理代码
3.函数测试块与构造函数
#include <iostream>
#include <stdexcept>
using namespace std;class A
{
public:A()try : ptr(new int[-1]){cout<<"constructing class A object"<<endl;}catch(bad_alloc & err){cout<<"Get the bad_alloc exception "<<err.what()<<endl;}catch(...){cout<<"Get teh unknown exception"<<endl;}
private:int * ptr;
};int main(int argc, char const *argv[])
{A a;while(1);return 0;
}
在构造A类型的对象的时候,因为是new int[-1],那么一定会抛出异常,最后被第一个catch子句捕获,注意构造函数测试块是唯一检测构造函数初始化列表异常的方法。
4.异常说明
4.1定义异常说明
4.2违反异常说明
4.3异常说明与成员函数
4.4异常说明与虚函数
#include <iostream>
#include <stdexcept>using namespace std;class A
{
public:A(){}virtual void func() throw(bad_alloc , runtime_error){cout<<"Hello World"<<endl;}};class B : public A
{
public:B(){}void func() throw(bad_alloc ,runtime_error , logic_error){}
};int main(int argc, char const *argv[])
{A a;B b;return 0;
}
上面的B派生于A,但是B中func函数抛出的异常种类却比A中多,我们编译一下:
void func() throw(bad_alloc ,runtime_error , logic_error)
^
C:\Users\Administrator\Desktop\exception.cc:10:18: error: overriding 'virtual void A::func() throw (std::bad_alloc, std::runtime_error)'
virtual void func() throw(bad_alloc , runtime_error)
要是把B的func改为这样呢
5.函数指针与异常说明
C++查缺补漏之异常(续)相关推荐
- EFCore查缺补漏(二):查询
相关文章: EFCore查缺补漏 第 20 轮 TechEmpower 评测结果出炉了,ASP.NET Core 的 Plaintext 成绩名列前茅,带着 EFCore 的测试却在 Single q ...
- JAVA核心,200例,查缺补漏
适用于想要查缺补漏的人:本已经掌握的技术,但是不知道如何表达的人:不断完善技自己,顺带梳理下答案. 主要包括以下模块:Java基础.容器.多线程.反射.对象拷贝.Java Web模块,异常.网络.设计 ...
- 查缺补漏系统学习 EF Core 6 - 数据查询
这是 EF Core 系列的第四篇文章,上一篇文章讲述了 EF Core 中的实体迁移与数据播种. 这篇文章盘点一下 EF Core 的几种数据查询方式,内容较多分上下两篇. 点击上方或后方蓝字,阅读 ...
- java基础的查缺补漏
打好基础,加油加油加油! 文章目录 前言 day1(6.16test,7.2) day2(7.3) java运行机制 java关键字 变量定义 常量定义 7.4 7.6 总结 前言 为了方便自己回顾知 ...
- Python高效技巧(三)---查缺补漏(时间处理、shutill模块、高阶函数、装饰器)
Python高效技巧 前言: 函数 1.可接受任意数量参数的函数和关键词参数 2.匿名函数 lambda 二.其他 1.关于序列的各种方法 2.产生器表达式 三. 查缺补漏 1.时间处理 1. cal ...
- 就业前夕——Java查缺补漏(从头学)
Java查缺补漏 变量 局部变量 方法或语句块内部定义的变量. 生命周期从声明位置开始到方法或语句块结束. 使用前必须先初始化. 成员变量(实例变量) 方法外部.类内部定义的变量(未被static修饰 ...
- Java 基础开发技术查缺补漏笔记
暑假期间,个人对一些未来研究生阶段可能会常用的编程技术进行重新一轮的系统复习和学习,及希望能够查缺补漏,有所提升.本文也是作为复习和学习过程中的笔记,用于长久的记录.不排除其中可能含有部分疏漏和错误, ...
- I2C总线学习—查缺补漏—S3C2440的I2C控制器
I2C总线学习-查缺补漏-S3C2440的I2C控制器 学习了IIC总线协议的理论部分,觉得应该学习具体操作2440的IIC控制器,毕竟最终都是为了学习S3C2440 ...
- I2C总线学习—查缺补漏—应答信号ACK
I2C总线学习-查缺补漏-应答信号ACK IIC协议规定,当主机作为接收设备时,主机对最后一个字节不应答,以向发送设备(从设备)标识数据传送结束.这是因为每次传输都应得到应答信号后 ...
最新文章
- LeetCode简单题之检查单词是否为句中其他单词的前缀
- Android众说纷纭分辨率
- python3 字符串 转 整型
- ApiDoc官方文档
- python 将pdf分页后插入至word中
- 铜线越长发电量越多,6千米长的铜线能让电灯泡发光吗?
- nagios监控slave(借助脚本)
- Toonz开源,Apple开源CareKit,以及更多新闻
- db2 linux 导入数据_实现DB2数据库迁移之导入步骤在Linux下
- PHP+MySQL存储数据出现中文乱码的问题
- Ubuntu20.04安装ROS Noetic
- paip.java 调用c++ dll so总结
- 用注册机注册Keil
- html星空代码在线,怎么操作html星空特效代码
- 如何才能更好发挥WinRunner,实现真正的自动化测试
- 一文读懂《“十四五”软件和信息技术服务业发展规划》
- 单例模式--懒汉模式和饿汉模式
- html设置列表编号起始值,Word多级编号怎么设置,要按我的要求作为起始值?
- android 程序启动监听,监听开机自动启动应用
- uni-app 使用外部.js文件定义全局变量和全局方法
热门文章
- 招商管理、智慧招商、精准招商、地图招商、crm系统、企业画像、拜访跟进、销售简报、营销触达、坐席外呼、短信、签名、公海、客户、合同、业绩、员工、权限管理、角色、部门、费用、消息、交接、axure原型
- 邮件营销解密:为什么一些品牌比你更幸运?
- MySql数据库相关小知识
- 【6月比赛合集】103场可报名的数据挖掘大奖赛,任君挑选!
- 金融期货开户有什么用(期货开户支持哪些银行)
- java 气泡聊天消息_Html,CSS 实现类似QQ的气泡聊天
- 用C语言求n以内的素数
- 人力资源管理专业知识与实务(初级)【13】
- ccf-csp 2018春季真题题解
- 云豹直播系统源码接入华为云存储,含问题及解决方法