c++的异常机制
来源:互联网 发布:centos下lamp环境搭建 编辑:程序博客网 时间:2024/05/01 13:03
异常这玩意在函数调用层次深,模块多,出现异常立刻跳出,在最外层处理的情况下很好用。可以让代码变得更整洁。
当throw出现时,程序会直接跳转到catch处(一直向函数上层搜索catch块,如果没有catch则直接崩溃)
try {
throw **;
}
catch (**)
{
}
程序在执行时,可以理解为先调用throw函数,throw函数调用catch函数
===========以下测试代码可以反映这种过程
class A
{
public:
A(int _x):x(_x)
{
cout << "构造" << endl;
}
A(const A &other)
{
x = other.x;
cout << "拷贝构造" << endl;
}
~A()
{
cout << "析构" << endl;
}
int x;
};
======第一种
try {
A a(10); //构造a
throw a; //调用throw函数,将a传入函数,进行了拷贝构造出_a
}
catch (A a)//被throw调用,只传递,进行拷贝构造出__a(此时throw上的作用域结束,a进行了析构)
{
cout << a.x << endl;
//程序执行结束,析构__a, 返回到throw调用结束,析构_a
}
try {
A a(10); //构造a
throw a; //调用throw函数,将a传入函数,进行了拷贝构造出_a
}
catch (A &a)//被throw调用,传入的是引用,不进行拷贝(此时throw上的作用域结束,a进行了析构)
{
cout << a.x << endl;
//程序执行结束,返回到throw调用结束,析构_a
}
======第三种
try {
throw A(10);//throw函数构造a
}
catch (A &a)//引用不进行拷贝
{
cout << a.x << endl;
//程序执行结束,返回到throw调用结束,析构a
}
- 【C/C++】异常机制
- [转载]C语言的异常机制
- object-c的异常处理机制
- object-c的异常处理机制
- object-c的异常处理机制
- object-c的异常处理机制
- object-c的异常处理机制
- C++‘异常’处理机制
- C ++ 异常机制
- Object-C异常机制
- 简记c、c++、java异常处理机制的区别
- C语言中一种更优雅的异常处理机制
- 转贴 C语言中一种优雅的异常处理机制
- 可嵌套的C语言异常处理机制
- C语言中一种优雅的异常处理机制
- C语言异常处理机制--setjmp的返回值
- C语言的异常机制--setjump()和longjump()实现
- 详解C的异常处理机制(goto\setjmp longjmp)
- 交换两个整型变量的值
- 英语口语收集(三十三)
- 十五周—插入字符串
- Struts2国际化和文件上传
- 关于xcode8.0隐私权限上传打包文件在构建版本不显示的问题
- c++的异常机制
- Java入门第一季
- MySQL视图
- 英语口语收集(三十四)
- 提问的艺术
- JAVA设计模式之创建者模式
- openstack网络(二)
- 1622-5 孔富晨 总结《2016年12月10日》 【连续第71天总结】
- 杂花生树(三十一)