网站大量收购独家精品文档,联系QQ:2885784924
  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C__第十章

第十章 异常处理 10.1 概述 10.2 抛出异常 10.3 异常捕获 10.4 程序举例 10.5 小结 10.1 概述 定义 程序员在编写程序时,应该充分考虑到各种可能出现的意外情况,有针对性地安排代码进行处理。 C++提供了专门用于处理错误的机制,称为异常处理(Exception Handling). 错误类型 程序有可能出现的一类错误是语法错误,这可以在C++编译器的帮助下迅速排除;另一类是运行时发生的错误,又分为逻辑错误和运行异常。 逻辑错误是由于程序设计时考虑不周全,往往由用户操作错误而引发。 运行异常主要是由系统的运行环境造成的,例如堆内存空间不足,无法满足用户动态内存分配的请求。 异常机制 出现错误的模块往往不具备处理错误的能力,这时它就抛出一个异常,希望上层模块能够捕获并处理这个异常。 如果上层模块也不能处理这个异常,还可以继续向上传播,直到异常被专门的异常处理模块捕获并处理为止。 如果程序始终没有理会并处理这个异常,最终它会被C++系统捕获。 10.2 抛出异常 C++抛出异常的关键字是throw,其语法形式为: throw 表达式; 说明:throw语句的表达式与return语句的表达式在形式上相似。return语句返回表达式的值,throw语句主要返回表达式的类型,作为catch块分析和捕捉的依据。 异常规格声明 C++语言提供了异常规格声明。异常规格声明出现在函数的声明语句中,位于形参列表之后。 语法形式: 类型 函数名(形参列表) throw(异常列表); 例如: void fun(int x) throw(A,B,C); 重新抛出异常 有时捕获到异常后,可能需要在程序中重新抛出刚刚捕获的异常。这时只需加入无表达式的throw语句即可。 catch(…) { … throw; } 10.3 异常捕获 编写C++程序时,一般在try块中列出可能出现异常的代码段,在紧随其后的catch块中安排处理异常的代码。 try块的作用是把throw语句和catch块建立关联,使得异常抛出后能够找到相应的异常处理部分。 关键字try try { … throw(异常名); //抛出异常 … } 关键字catch catch(异常类型声明) { … } 说 明 catch块必须紧跟在try块的后面。catch块可以有多个,以分别处理不同类型的异常。而且所有的catch块都必须是连续的。 如果catch的异常类型声明是省略号(…),则该catch块可以捕获任何还没有被处理的任何类型的异常。显然这样的catch块应该安排在try块之后,所有catch块的最后面。 例10.1 异常处理。 #includeiostream.h void fun(int i) int main() { int i; for(i=1;i=2;i++) { try { fun(i); } --- 案 例 catch(int) { cout捕获整型异常!endl; } catch(double) { cout捕获双精度实型异常!endl; } } --- 案 例 void fun(int i) { switch(i) { case 1:throw 1; case 2:throw 2.0; } }

文档评论(0)

asd522513656 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档