C++异常机制的初识
来源:互联网 发布:城市新闻网络交换平台 编辑:程序博客网 时间:2024/06/18 09:30
1. typeid 的使用
回顾:sizeof 关键字,用来计算数据类型在内存中的占用的空间的大小
int i= 10;
表达式的结果是整数;
typeid 关键字,用来获取数据类型的名字 //添加头文件#include<typeinfo>
typeid(int) = typeid(i) 结果是一样的
返回值是typeinfo类型的对象,在该对象上调用成员函数name()获取类型的名字,返回值类型是C风格的字符串类型
typeinfo 类型的对象支持判断运算符(==)
注意:
只有在具有多态关系的父子类之间,才能通过typeid正确的判断一个指针实际指向的对象类型
2. dynamic_cast 的使用
格式:目标类型 变量名 = dynamic_cast<目标类型>(源类型);
功能:
一般用于在具有多态继承关系的父子类之间,主要用于父类到子类的转换
static_cast 在源类型和目标类型之间只要有一个方向可以发生隐式类型转换,那么在两个方向上都可以做静态类型转换,
反之,如果在两个方向上都不能做隐式类型转换,那么在两个方向上都不能做静态类型转换
const_cast 用于去除指针/引用 上面的常属性
reinterpret_cast 用于任意指针类型之间的转换,以及指针和整型之间的转换
3. 异常
3.1 异常的语法格式
(1)异常的捕获try
{
可能引发异常的语句;(比如函数的调用)
}
catch(异常类型 变量名)
{
异常处理语句;
}
catch(异常类型2 变量名2)
{
异常处理语句;
}.........
catch(...)
{
异常处理语句;
}
(2)异常抛出
throw 异常类型;
3.2 异常的基本用法
(1)抛出简单类型变量,使用异常变量的值来区分不同的异常(比如 int类型)(2)抛出类类型对象,那么通过异常类型来区分不同的异常(如自定义不同的异常类)
(3)从标准异常类继承
exception 是标准异常类的基类
/usr/include/c++/4.6/exception 文件中
virtual/*虚函数 */ const char*/*返回值类型*/what() const/*常函数*/throw()/*异常说明,表示不抛出任何异常*/;
(4)继续抛出异常
a.发生异常之后可以不处理,继续向上抛
b.只能处理一部分,处理完毕之后继续throw
如:
try
{
//
}
catch(exception& ex)
{
//throw ex;
//....
throw ex;
}
(5)异常说明
返回值类型 函数名(形参表) throw(异常类型1,异常类型2,....){}
告诉编译器可能会抛出的异常
0 0
- C++异常机制的初识
- 初识JAVA异常处理机制
- 【C/C++】异常机制
- Java 异常的初识
- [转载]C语言的异常机制
- object-c的异常处理机制
- object-c的异常处理机制
- object-c的异常处理机制
- object-c的异常处理机制
- object-c的异常处理机制
- C++‘异常’处理机制
- C ++ 异常机制
- Object-C异常机制
- 简记c、c++、java异常处理机制的区别
- error和panic,初识Golang的错误和异常处理机制
- C语言中一种更优雅的异常处理机制
- 转贴 C语言中一种优雅的异常处理机制
- 可嵌套的C语言异常处理机制
- java 抽象类和接口
- Activity属性设置大全
- 文件属性及操作
- solr删除数据
- Android中自动跳转到系统设置界面
- C++异常机制的初识
- Git use
- 自定义TextView的一些主意事项
- 解决EasyUi中的DataGrid删除一条记录后,被删除的数据仍处于被选中状态问题
- Eclipse中默认ISO8859-1 字符集设置utf-8
- 2014真正实现无需跑包,无需pin,10分钟连破10个网实战教程(包含视频语音教程)
- VBA操作word,通过域方式插入图片问题记录
- 关于ie中easyui form组件load事件无法多次加载数据
- python pdb 基础调试