C++ 异常安全
来源:互联网 发布:防止sql注入方法 编辑:程序博客网 时间:2024/04/29 06:02
什么是异常安全的代码
一直以来,我对“异常安全”这个概念都不是太理解,今天查阅了一些资料,终于弄清楚了它的意思。
“异常安全”并不是说不能抛出异常,更不是说“非常安全的意思”,而是说即使在抛出异常的时候(如果有异常的话),程序回退的过程是干净的。
“异常安全”分为三个级别:
1.基本级别:可能发生异常,但是彼时代码保证做了任何必要的清理工作;
2.事物级别:可能发生异常,但是彼时代码保证它对数据的任何修改都被回滚;
3.没有异常:不可能发生异常;
如果要编写“异常安全”的代码,必须做到上述3点中的一点。
异常安全函数即使发生异常也不会泄露资源或允许任何数据结构破坏。这样的函数区分为三种可能的保证:基本型,强烈型,不抛异常型。
强烈保证往往能够以Copy and Swap实现出来,但是强烈保证并非对所有函数都可实现或具备现实意义。
函数提供的异常安全保证通长最后只等于其所调用之各个函数的“异常 安全保证”中的最弱者。
0 0
- 【c++】异常安全深赋值
- 异常安全
- <Effective C++> Item 29:争取异常安全的代码
- 线程安全,异常安全,类型安全
- 可重入/线程安全/信号安全/异常安全
- 简化异常安全代码
- 异常安全-对象生命周期
- 关于JavaCard安全异常
- Item 29 异常安全
- C++异常安全
- C++ 异常安全
- 安全编程-异常处理
- C++异常安全
- 努力做到异常安全
- C++异常安全
- 异常安全编程
- 类型安全 与 线程安全 、异常安全、事务安全
- 《Effective C++》读书笔记之item29:为“异常安全”而努力是值得的
- Android03_Listener监听
- CSS样式命名规则
- linux 进程间通信
- 浅析Java多线程synchronized关键字、wait和notify方法
- Android开发之旅一eclipse查看jar源码
- C++ 异常安全
- BusyBox 简化嵌入式 Linux 系统
- 关于ExecuteReader()获得参数值和返回值的方法
- 用命令实现Win7远程桌面关机和重启
- 简介ImageLoader(二)
- android toolbox
- SVN服务器搭建和使用
- Maven 学习记录
- .NET API for RabbitMQ and ActiveMQ