东南大学 C++ 第10章(1)━━异常处理.pptVIP

  • 8
  • 0
  • 约1.69万字
  • 约 27页
  • 2018-04-02 发布于江西
  • 举报

东南大学 C++ 第10章(1)━━异常处理.ppt

东南大学C第10章(1)━━异常处理

主要内容 运行时错误 异常处理的概念 异常处理的实现机制 异常的捕获与处理过程 异常处理中动态资源的释放 异常处理中对象的构造与析构 抛出异常对象 异常接口声明 运行时错误 程序中常见的错误: ㈠编译时错误: ①指程序在编译时,系统就能发现的语法错误(如:变量未定义、括号不配对、语句末尾缺分号、关键字拼写错等等)。 ②对于程序中的语法错误,编译系统会告知在第几行出错以及什么样的错,因而较容易发现并加以纠正。 ㈡运行时错误: ①指程序通过编译且能投入运行,但在运行过程中,会发生某些异常现象(如:出现除数为 0 的情况、输入数据时类型有错、存储空间耗尽、数组越界、文件打开失败而无法读数等等),导致运行结果不正确,或程序异常终止,或发生死机现象。 ②对于程序中潜在的运行时错误,常因较隐蔽不容易发现而难以纠正,尤其对于大型软件,要找出所有潜在的运行时错误几乎是不可能的。 异常处理的概念 程序中引入异常处理机制,以提高程序的健壮性: ①目标:提高程序的容错能力,使程序不仅在正确的情况下能正常运行,在有错的情况下也能作出相应的处理,使程序运行时不至于莫名其妙终止,或发生死机现象。 ②任务:在程序设计时,就要事先分析其运行时可能出现的各种异常现象,分别制定出相应的处理方法,并将各个异常处理代码段嵌入到程序中。 ③机制:程序运行时,若出现了某种异常现象,因程序本身对其已有防范措施,可以在异常发生时停止发生异常的操作,并抛出异常信息,流程随即沿调用链退回,转入相应的异常处理代码段处理,而程序的其它部分仍然能够继续执行。 关于异常: ①异常处理中所涉及的异常,是指程序中可能检测到的、或可预见可能发生地的某些运行时的不正常情况。 ②C++中,在建立异常抛出与异常处理之间有一整套程序设计的机制。 异常处理的实现机制 异常处理机制的组成: ①异常的监测(try) ②异常的抛出(throw) ③异常的捕获并处理(catch) 在异常的发生地,需要抛出异常的程序段中━━━使用 throw 将异常信息抛出。 格式: throw 表达式 ; 在异常的监测地,等待捕获并处理异常的程序段中━━━使用 try – catch 结构。 格式: try { 被监测的语句序列 } catch ( 异常1的类型声明 ) { 类型1的异常处理代码段 } catch ( 异常2的类型声明 ) { 类型2的异常处理代码段 } … … 实现:程序运行过程中,若 try 块中任何类型的数据对象发生异常,都可通过 throw语句将异常信息抛出,流程随即沿调用链退回,直到该异常被其匹配的 catch 子句捕获,并在此执行异常处理;若 try 块中没有发生异常,则流程跳过该 try - catch 结构中的所有 catch 子句,然后继续执行。 异常处理的实现机制 关于 try – catch 结构的使用: ①异常的监测━━try子句:将程序中可能出现异常,需要监测的语句或语句序列用 try 子句将其嵌在块中,实施异常监测。 ②异常的捕获并处理━━catch子句:一个 catch子句,捕获并处理一种类型的异常,其后的圆括号中是所捕获异常的类型声明,而花括号中是相应的异常处理代码段。 ③完整的 try - catch 结构:在一个 try - catch 结构中,只能有一个 try 子句, catch子句紧跟其后,二者之间不能插入其他语句,但可以有多个 catch 子句,以便捕获并处理不同类型的异常。 如: try { 被监测的语句序列 } catch ( double ) { … … } catch ( int ) { … … } ④注意:若一个 catch 子句, 其后的圆括号中用删节号 “…” 来指定其捕获异常的类型,则表示该 catch 子句可以捕捉任何类型的异常。但这种 catch 子句应放在 try – catch 结构中的最后,若作为第一个 catch子句,则其后的 catch子句都不起作用。 异常处理的实现机制 关于 throw 语句的使用: ①抛出异常━━throw运算符:只要是在 try 块中的语句,或该语句所调用的函数中发生异常,都可使用 throw 运算符,创建一个异常信息并抛出。 ②异常信息━━表达式:表达式的值可以是C++中任何类型的数据,因此异常信息可以是基本类型的数据,也可以是自定义类型的数据,如:类的对象。 ③throw 语句的位置:throw 语句与 try – catch 结构可以出现

文档评论(0)

1亿VIP精品文档

相关文档