c异常处理(精)

上传人:F****n 文档编号:102704174 上传时间:2019-10-04 格式:DOC 页数:5 大小:18KB
返回 下载 相关 举报
c异常处理(精)_第1页
第1页 / 共5页
c异常处理(精)_第2页
第2页 / 共5页
c异常处理(精)_第3页
第3页 / 共5页
c异常处理(精)_第4页
第4页 / 共5页
c异常处理(精)_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《c异常处理(精)》由会员分享,可在线阅读,更多相关《c异常处理(精)(5页珍藏版)》请在金锄头文库上搜索。

1、#include stdafx.h#include #include #include / 内存泄露检测机制#define _CRTDBG_MAP_ALLOC#ifdef _DEBUG#define new new(_NORMAL_BLOCK, _FILE_, _LINE_#endif/ 自定义异常类class MyExcepctionpublic:/ 构造函数,参数为错误代码MyExcepction(int errorId/ 输出构造函数被调用信息std:cout MyExcepction is called std:endl;m_errorId = errorId;/ 拷贝构造函数MyEx

2、cepction( MyExcepction& myExp/ 输出拷贝构造函数被调用信息std:cout copy construct is called m_errorId = myExp.m_errorId;MyExcepction(/ 输出析构函数被调用信息std:cout MyExcepction is called std:endl;/ 获取错误码int getErrorId(return m_errorId;private:/ 错误码int m_errorId;int main(int argc, char* argv/ 内存泄露检测机制_CrtSetDbgFlag( _CRTDB

3、G_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF ;/ 可以改变错误码,以便抛出不同的异常进行测试int throwErrorCode = 110;std:cout input test code : throwErrorCode;tryif ( throwErrorCode = 110MyExcepction myStru(110;/ 抛出对象的地址 - 由catch( MyExcepction* pMyExcepction 捕获/ 这里该对象的地址抛出给catch语句,不会调用对象的拷贝构造函数/ 传地址是提倡的做法,不会频繁地调用该对象的构造函数或拷贝构造函数

4、/ catch语句执行结束后,myStru会被析构掉throw &myStru;else if ( throwErrorCode = 119 MyExcepction myStru(119;/ 抛出对象,这里会通过拷贝构造函数创建一个临时的对象传出给catch/ 由catch( MyExcepction myExcepction 捕获/ 在catch语句中会再次调用通过拷贝构造函数创建临时对象复制这里传过去的对象/ throw结束后myStru会被析构掉throw myStru;else if ( throwErrorCode = 120 / 不提倡这样的抛出方法/ 这样做的话,如果catch

5、( MyExcepction* pMyExcepction中不执行delete操作则会发生内存泄露/ 由catch( MyExcepction* pMyExcepction 捕获MyExcepction * pMyStru = new MyExcepction(120;throw pMyStru;else/ 直接创建新对象抛出/ 相当于创建了临时的对象传递给了catch语句/ 由catch接收时通过拷贝构造函数再次创建临时对象接收传递过去的对象/ throw结束后两次创建的临时对象会被析构掉throw MyExcepction(throwErrorCode;catch( MyExcepctio

6、n* pMyExcepction/ 输出本语句被执行信息std:cout 执行了 catch( MyExcepction* pMyExcepction std:endl;/ 输出错误信息std:cout error Code : getErrorId( std:endl;/ 异常抛出的新对象并非创建在函数栈上,而是创建在专用的异常栈上,不需要进行delete/delete pMyExcepction;catch ( MyExcepction myExcepction/ 输出本语句被执行信息std:cout 执行了 catch ( MyExcepction myExcepction std:endl;/ 输出错误信息std:cout error Code : myExcepction.getErrorId( std:endl;catch(./ 输出本语句被执行信息std:cout 执行了 catch(. temp;return 0;财务盈利能力分析采用的主要评价指标包括静态评价指标和动态评价指标两类。其中静态评价指标主要有投资回收期,投资利润率,投资利税率和资本金利润率;动态评价指标主要有投资回收期,净现值、净现值率,内部收益率。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号