haihongyuan.com
海量文库 文档专家
全站搜索:
您现在的位置:首页 > 初中教育 > 初中历政地初中历政地

class7

发布时间:2013-12-15 11:40:44  

C++ 高级主题

命名空间 ? 异常 ? 设计模式
?

命名空间
名字污染 ? namespace ? 基本用法
?

异常
错误事件 ? C语言中处理 if 语句 缺点 :质量降级 白盒测试周期(推迟面 试) 开发成本 ? 流程与处理分开 代码清晰,代码安全,层次嵌套(跳到上层 流,不同于return )
?

基本用法
Throw ? Try ? Catch
?

异常处理结构
抛出异常程序段
...... throw ...... 对象;

捕获并处理异常
try { 包含可能抛出异常的语句; } catch(类型名 [形参名]) // 捕获特定类型的异常 { 异常处理语句 } catch(类型名 [形参名]) // 捕获特定类型的异常 { 异常处理语句 } catch(...) // 三个点则表示捕获所有类型的异常 { 异常处理语句 } 6

异常类 ? 异常对象 构造 析构 Class A{}; Catch(A a),Catch(A &a),Catch(A *p);
?

异常栈
?

抛出异常对象的函数中并不一定必须存在trycatch块,它可以是 调用这个函数的上层函数中存在trycatch块,这样这个函数的代 码也同样是受保护、受监控的代码;

?

异常对象在throw时创建,保存在异常栈中,可以跨接多个函数 而传递到上层,在栈清空的过程中不会被销毁。
在异常对象向上传递的过程中,所经过函数定义的对象要被销 毁。

?

?

Func() throw

重抛异常
当catch得到一个异常后,不能在当前catch块中处理,或需 要上级函数继续处理时,就必须重新抛出异常(Exception rethrow)。 重抛出异常对象: 1. throw 被重新抛出的异常就是原来的异常 2. throw newobj; 被重新抛出是新创建的异常对象,原来的异常对象将 被销毁。

构造函数异常
? ?

?
? ?

构造函数出现异常后还会调用析构函数么? C++中通知对象构造失败的唯一方法那就是在构 造函数中抛出异常; 构造函数中抛出异常将导致对象的析构函数不被 执行; 当对象发生部分构造时,已经构造完毕的子对象 将会逆序地被析构; C++的异常处理不会破坏任何一条面向对象的特 性

析构函数异常
(1) C++中析构函数的执行不应该抛出异常; (2) 若在某一个析构函数中会有一些可能(哪怕 是一点点可能)发生异常时,那么就必须要把这 种可能发生的异常完全封装在析构函数内部,决 不能让它抛出函数之外

作业
?

当堂练习 验证


网站首页网站地图 站长统计
All rights reserved Powered by 海文库
copyright ©right 2010-2011。
文档资料库内容来自网络,如有侵犯请联系客服。zhit326@126.com