- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
12.3.6 捕获所有的异常 void Xhandler(int test) { try{ if(test==0) throw test; // throw int if(test==1) throw a; // throw char if(test==2) throw 123.23; // throw double } catch(...) { // catch all exceptions捕获所有的异常 cout Caught One!\n; } } 捕获所有其他的异常 void Xhandler(int test) { try{ if(test==0) throw test; // throw int if(test==1) throw a; // throw char if(test==2) throw 123.23; // throw double } catch(int i) { // catch an int exception cout Caught i \n; } catch(...) { // catch all other exceptions捕获所有其他的异常 cout Caught One!\n; } } 12.4 异常类和C++标准异常 catch可以捕获任意类型的异常,包括程序员自己创建的类型。 在实际程序中,大多数异常的类型都是类,而不是内置数据类型(标准类型)。 为异常定义一个类的最好理由是:我们可以创建一个类来描述发生的错误信息,而这个信息可以帮助异常处理模块处理错误。例如: 实际应用中使用的大多数异常类远比MyException要复杂。 12.4.1 使用异常类 #include iostream #include cstring using namespace std; class MyException { public: char str_what[80]; MyException() { *str_what = 0; } MyException(char *s) { strcpy(str_what, s); } }; 使用异常类 使用异常类(续) int main() { int a, b; try { cout Enter numerator and denominator: ; cin a b; if(!b) throw MyException(Cannot divide by zero!); else cout Quotient is a/b \n; } catch (MyException e) { // catch an error cout e.str_what \n; } return 0; } 返回 12.4.2 C++语言中的标准异常 表12.1 C++语言本身抛出的标准异常 标准异常的名字 抛出异常的主体 对应的头文件 bad_alloc new new bad_cast dynamic_cast typeinfo bad_typeid typeid typeinfo bad_exception exception specification exception 【例12.11】处理异常类bad_alloc对象 #include iostream #include new //需要包含该头文件 using namespace std; ... try { p = new int[32]; // 为整型数组申请动态存储单元 } catch (bad_alloc xa) { cout Allocation failure.分配内存失败。\n; return 1; } ... 12.4.3 C++异常处理机制的好处 将程序中正常处理的代码(描述问题的算法)与异常处理代码分离开来,提高了程序的可读性。 提供了一种更规则的处理异常的风格,便于软件项目组人员之间的合作。 通常情况下,类的创建者监控代码段,从类中抛出异常。 类的使用者捕获到异常并处理。 C++异常处理机制的好处(续) 在异常发生时,能够撤销对象,并自动调用析构函数进行善后处理,释放对象所占用的系统资源。 发生异常时资源释放 class Y { int* p; void init() ; public: Y(int s) { p =
您可能关注的文档
- Linux教学课件项目5服务与进程管理幻灯片.ppt
- 高考复习二轮冲刺化学课件3元素复习镁和铝幻灯片.ppt
- 高考复习二轮冲刺化学课件4有机化学3同分异构体解型及解法幻灯片.ppt
- COM与电能质量控制许1稿100325章节幻灯片.ppt
- Linux教学课件项目6软件包管理1章节幻灯片.ppt
- 高考复习二轮冲刺化学课件4有机化学4有机物分子式的确定幻灯片.ppt
- COM与电能质量控制-许-1稿-100325章节幻灯片.ppt
- Linux教学课件项目6软件包管理幻灯片.ppt
- 高考复习二轮冲刺化学课件4有机化学6有机合成和推断幻灯片.ppt
- 高考复习二轮冲刺化学课件5实验2定量实验幻灯片.ppt
文档评论(0)