自己写一个异常类my_own_exception来感知一下异常机制
来源:互联网 发布:java io深入 编辑:程序博客网 时间:2024/06/06 04:23
在本文中, 我自己来写一个异常类my_own_exception, 主要为了感知一下C++异常机制, 看代码:
#include <iostream>using namespace std;class my_own_exception{private:char szMsg[1024];public:my_own_exception(const char *p){memset(szMsg, 0, sizeof(szMsg));strncpy(szMsg, p, sizeof(szMsg) - 1);}const char *what(){return szMsg;}};int main(){try{int x = 1;int y = 0;if(0 == y){throw my_own_exception("error!!!");}}catch(my_own_exception &e){cout << e.what() << endl;}return 0;}结果:error!!!
但在玩这代码的时候, 我发现了一个奇怪的问题:
#include <iostream>using namespace std;class my_own_exception{public:~my_own_exception(){cout << "destructor" << endl;}};int main(){try{throw my_own_exception();}catch(...){}return 0;}
结果是:
destructor
destructor
再看程序:
#include <iostream>using namespace std;class my_own_exception{public:~my_own_exception(){cout << this << endl;cout << "destructor" << endl;}};int main(){try{throw my_own_exception();}catch(...){}return 0;}
结果是:
0013FF68
destructor
0013FF6C
destructor
继续看程序:
#include <iostream>using namespace std;class my_own_exception{public:virtual ~my_own_exception(){cout << this << endl;cout << "destructor" << endl;}};int main(){try{throw my_own_exception();}catch(...){}return 0;}
结果是:
0013FF6C
destructor
2. 3 4程序的具体原因, 我还没有太弄懂, 等以后弄懂了, 再回来完善本文。 有清楚的朋友, 也请不吝赐教。
0 0
- 自己写一个异常类my_own_exception来感知一下异常机制
- 记录一下自己异常解决的一个思路
- 自己创建一个异常
- 自己保存一下,安卓常见异常
- 抛出异常及声明异常 自己定义一个异常
- 自己的异常类
- 利用java的异常处理自己写个一个图书借阅系统的小案例
- 写一个完善的c++异常处理类
- [原创]如何写一个完善的c++异常处理类
- 如何写一个完善的c++异常处理类
- 如何写一个完善的c++异常处理类
- 从博客园那弄来了。自己写一个例子,对比了一下啊。还是异步速度快
- 异常机制
- 异常机制
- 异常机制
- 异常机制
- 异常机制
- 异常机制
- mapreduce框架中的全局变量的设置
- PHP图片上传程序(完整版)
- UIScrollView的一些属性
- ios多线程操作(十二)—— 自定义NSOperation实现网络下载后回调
- 计算几何算法概览
- 自己写一个异常类my_own_exception来感知一下异常机制
- 海量数据处理
- HDU 5193 Go to movies Ⅱ 块状链表套树状数组
- 为什么基类的析构函数是虚函数?
- java Native Method
- linux 忘记了root的密码
- hdu1392标准求凸包模板
- UITextField的一些属性
- 条款42、typename的双重意义