- 22
- 0
- 约4.27千字
- 约 6页
- 2017-12-27 发布于河南
- 举报
自定义异常处理类的写法和使用
自定义异常处理类的写法和使用
详见自己写的CSubwayException类:
// [特别提示]:在C++标准中规定,可以在程序任何地方throw一个异常对象,
// 并不要求一定只能是在受到try block监控保护的作用域中才能抛出异常,但
// 如果在程序中出现了抛出的找不到对应catch block的异常对象时,C++标
// 准中规定要求系统必须执行terminate()来终止程序。
// 因此这个例程是可以编译通过的,但运行时却会异常终止。这往往给软件
// 系统带来了不安全性。与此形成对比的是java中提供的异常处理模型却是不
// 永许出现这样的找不到对应catch block的异常对象,它在编译时就给出错误
// 提示,所以java中提供的异常处理模型往往比C++要更完善,后面的章节
// 会进一步对这两种异常处理模型进行一个详细的分析比较。
return 0;
try,catch, throw的含义就很清楚,但怎么使用,我还是过了好多年才明白一些
先看一个不好的例子
C/C++ code
//----------------- 不好的代码 ----------------- class CTest1; class CTest2; class CTest3; void BadCode() { //new test1 CTest1 * pTest1 = new CTest1; //do something bool bRet = DoSomething(); if (!bRet) { delete pTest1; return; } //new CTest2 CTest2 * pTest2 = new CTest2; //do something bRet = DoSomething(); if (!bRet) { delete pTest1; delete pTest2; return; } //new CTest3 CTest3 * pTest3 = new CTest3; //do something bRet = DoSomething(); if (!bRet) { delete pTest1; delete pTest2; delete pTest3; return; } //release delete pTest1; delete pTest2; delete pTest3; }
下面是我个人比较喜欢的写法
C/C++ code
//--------- 好的例子 --------------- class CTest1; class CTest2; class CTest3; void MyCode() { //define CTest1 * pTest1 = NULL; CTest2 * pTest2 = NULL; CTest3 * pTest3 = NULL; //使用try, catch, throw try { //new test1 pTest1 = new CTest1; //do something bool bRet = DoSomething(); if (!bRet) throw -1; //new CTest2 pTest2 = new CTest2; //do something bRet = DoSomething(); if (!bRet) throw -2; //new CTest3 pTest3 = new CTest3; bRet = DoSomething(); //do something if (!bRet) throw -3; //release delete pTest1; pTest1 = NULL; delete pTest2; pTest2 = NULL; delete pTest3; pTest3 = NULL; } catch(...) { if (pTest1) delete pTest1; if (pTest2) delete pTest2; if (pTest3) delete pTest3; } } 另外在一个函数里不仅仅只有一个try,catch。可以有多个。比如: //--------- 多个try的例子 --------------- class CTest1; class CTest2; class CTest3; void MyCode() { //define CTest1 * pTest1 = NULL; CTest2 * pTest2 = NULL; CTest3 * pTest3 = NULL; //使用try,
您可能关注的文档
最近下载
- 部编版语文五年级下册第二单元教材解读大单元集体备课.pptx VIP
- 部编版语文五年级下册第一单元教材解读大单元集体备课.pptx VIP
- 车工 (数控车床)理论知识考核要素细目表四级.pdf VIP
- 本科课程《基础护理学》教案,第十二章给药.doc VIP
- 农村题材小品剧本村官.pdf VIP
- 小品剧本-小品《绰号》.docx VIP
- 小品剧本-小品《竞选》.docx VIP
- 本科课程基础护理学教给药教案(2025—2026学年).docx VIP
- LaserjetCP1025系列打印机打印质量故障排除手册.pdf VIP
- 年会小品剧本小品剧本:搞笑小品剧本《都是喝酒惹事》台词大全.docx VIP
原创力文档

文档评论(0)