苏州大学计算机科学与技术学院面向对象与C++程序设计课件 第十讲.pptVIP

  • 1
  • 0
  • 约1.1千字
  • 约 10页
  • 2019-05-14 发布于广东
  • 举报

苏州大学计算机科学与技术学院面向对象与C++程序设计课件 第十讲.ppt

第十讲 异常处理机制 苏州大学计算机科学与技术学院 异常处理的必要 程序的正常结束 程序的非正常结束 除数为0 指针越界 为了提供安全和稳定的程序 保证程序在环境条件出现异外或用户操作不当的时候程序也有正确合理的表现,避免出现灾难性后果 C错误处理方式 C的处理方法 返回值是C常用判断方法 if ((p = malloc(n)) == NULL) /* ... */ C++异常处理 异常处理的步骤: 发生异常则暂停正常程序 搜寻处理此异常的代码 执行异常处理代码 将异常处理与正常代码分离,提高程序的可读性、可维护性 当在函数体中检测到异常条件存在,但无法确定相应的处理方法时,将引发一个异常,并由函数的直接或间接调用者处理这个异常 异常的实现 throw 抛出异常 在被调用函数中 try 放入监视异常的语句检测是否触发异常 如果有异常就用throw抛出 catch 捕获匹配的异常 在上层调用函数中 try与catch语句总是结合使用 异常处理器 每个异常处理器,都包含: 一个try 一个或多个throw 一个或多个catch 一个简单的异常处理器 int main(int argc,char *argv[]) { cout”开始”endl; try{ cout”进入try语句块.”endl; throw 200; cout” 不会被执行”endl; } catch(int i){ cout”捕获一个异常,它的值为:”iendl; } cout”结束”endl; return 0; } throw和catch可以不在同一函数中 int Div(int x,int y) { if(y==0) throw y; return x/y; } int main(int argc ,char *argv[]) { try { cout5/2=Div(5,2)endl; cout8/0=Div(8,0)endl; cout7/3=Div(7,3)endl; } catch(int i) { if(i==0) coutException of dividing zero.\n; } coutend; return 0; } 对异常使用… catch(…) 可以捕获一个try抛出的所有异常 不能区分异常的类型 通常与正常catch结合使用于捕获不知类型的异常 * *

文档评论(0)

1亿VIP精品文档

相关文档