自定义异常处理类的写法和使用.docVIP

  • 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,

文档评论(0)

1亿VIP精品文档

相关文档