C++ 异常处理
2013-12-13 19:04
246 查看
1、异常处理分为两个部分:抛出异常和捕获异常。
2、抛出异常,类似于方法返回值,离开了作用域,局部对象销毁,因此需要有一个临时对象保存结果。C++特别强调,抛出一个异常,必定要一个临时对象接收,存在copy构造,这是不可避免的,因为抛出的异常已经离开了作用域,失去了控制权。
3、捕获异常,类似于调用方法,将临时对象传递给catch中的局部对象,为了避免再次copy构造,catch语句应该使用引用。特别注意,内置类型的临时对象是不可修改的,也就是说,内置类型的临时对象不能赋值给non-const引用,但是异常对象是可以的,catch语句可以是non-const引用。
4、捕获异常与调用方法的区别:
a、捕获异常是最先匹配,调用方法是最有匹配。
b、调用方法存在隐式类型转换,即int可以传递给被调方法中的double形参,捕获异常是不会发生的。二者相同的是,满足里氏代换的情况,可以匹配成功。
2、抛出异常,类似于方法返回值,离开了作用域,局部对象销毁,因此需要有一个临时对象保存结果。C++特别强调,抛出一个异常,必定要一个临时对象接收,存在copy构造,这是不可避免的,因为抛出的异常已经离开了作用域,失去了控制权。
3、捕获异常,类似于调用方法,将临时对象传递给catch中的局部对象,为了避免再次copy构造,catch语句应该使用引用。特别注意,内置类型的临时对象是不可修改的,也就是说,内置类型的临时对象不能赋值给non-const引用,但是异常对象是可以的,catch语句可以是non-const引用。
4、捕获异常与调用方法的区别:
a、捕获异常是最先匹配,调用方法是最有匹配。
b、调用方法存在隐式类型转换,即int可以传递给被调方法中的double形参,捕获异常是不会发生的。二者相同的是,满足里氏代换的情况,可以匹配成功。
相关文章推荐
- C++中Static作用和使用方法
- C++类静态成员与类静态成员函数
- 山东理工大学ACM平台题答案关于C语言 1601 3n+1数链问题
- C++类成员初始化
- C语言经典题目及解题思路
- C++实现A星算法自动寻路
- C语言位域-编程之美之中国将帅问题
- C++书籍链接
- C#的COM事件在C++和JAVA中触发和响应的实现
- C++ 如何判定字符串里有中文
- C++ 拷贝构造函数(即复制构造函数)和赋值运算符重载(有说赋值构造函数)区别
- C++类对象内存模型与成员函数调用分析(下)
- C++类对象内存模型与成员函数调用分析(上)
- C/C++堆栈指引
- C++对象的内存分析(6)
- C++对象的内存分析(5)
- C++对象的内存分析(4)
- C++对象的内存分析(3)
- C++对象的内存分析(2)
- C++对象的内存分析(1)