- 3
- 0
- 约8.42千字
- 约 9页
- 2017-06-09 发布于北京
- 举报
c++异常处理机制示例及讲解(含源代码)
这两天我写了一个HYPERLINK / \t _blank 测试c++异常处理机制的例子,感觉有很好的示范作用,在此贴出来,给c++异常处理的初学者入门。本文后附有c++异常的知识普及,有兴趣者也可以看看。
下面的代码直接贴到你的console工程中,可以运行调试看看效果,并分析c++的异常机制。
#include stdafx.h
#includestdlib.h
#includecrtdbg.h
#include iostream
// 内存泄露检测机制
#define _CRTDBG_MAP_ALLOC
#ifdef _DEBUG
#define new new(_NORMAL_BLOCK, __FILE__, __LINE__)
#endif
// 自定义异常类
class MyExcepction
{
public:
// 构造函数,参数为错误代码
MyExcepction(int errorId)
{
// 输出构造函数被调用信息
std::cout MyExcepction is called std::endl;
m_errorId = errorId;
}
// 拷贝构造函数
MyExcepction( MyExcepction myExp)
{
// 输出拷贝构造函数被调用信息
std::cout copy construct is called std::endl;
this-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( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );
// 可以改变错误码,以便抛出不同的异常进行HYPERLINK / \t _blank 测试
int throwErrorCode = 110;
std::cout input test code : std::endl;
std::cin throwErrorCode;
try
{
if ( throwErrorCode == 110)
{
MyExcepction myStru(110);
// 抛出对象的地址 - 由catch( MyExcepction*??? pMyExcepction) 捕获
// 这里该对象的地址抛出给catch语句,不会调用对象的拷贝构造函数
// 传地址是提倡的做法,不会频繁地调用该对象的构造函数或拷贝构造函数
// 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( MyExcepction*??? pMyExcepction)中不执行delete操作则会发生内存泄露
// 由catch( MyExcepction*??? pMyExcepction) 捕获
MyExcepction * pMyStru = new MyExcepction(120);
throw pMyStru;
}
else
{
// 直接创建新对象抛出
// 相当于创建了临时的对象传递给了catch语句
// 由catch
您可能关注的文档
最近下载
- 给水排水1 (2017)_17ZS01_卫生工程.docx VIP
- 《GB/T 46748-2025宇航用元器件应用验证综合评价方法》.pdf
- 《船舶轴带发电机原理与维护》课件.ppt VIP
- 人教版高一上学期数学(必修一)期末考试卷(附答案).pdf VIP
- 部编版《道德与法治》 四年级下册教案教学设计、教学计划、教学进度安排、教学反思 检测试卷(含答案).doc VIP
- 离婚协议书范本(标准版).docx VIP
- 年产10000吨味精项目工厂设计要点.pdf VIP
- 锂离子电池隔膜培训.pptx VIP
- 大学物理光学复习试卷及答案.docx VIP
- 湖北省武汉市江岸区三年级(上)期末语文试卷.doc VIP
原创力文档

文档评论(0)