异常安全(exception-safe)指的是:
- 没有资源泄露,这里的资源包括内存、文件句柄、锁……
- 数据没有败坏,比如不会有野指针的出现……
基于异常安全的定义,有三种级别的异常安全承诺:
- 最基本承诺。这种承诺其实就是上述异常安全的定义,即不会泄露资源,并且程序内部一切逻辑、变量是自洽的。虽然程序内部自洽,但是可能异常引发了一些变量的改变,我们并不清楚程序到底发生了哪些改变,为此我们还需要亲自去检查是哪些变量发生了改变
- 强烈承诺。即:若有异常抛出,则程序在异常发生前后保持一致;若无异常抛出,则程序状态如预期那样被修改
- 不抛出异常承诺。即程序总是可以完成预期的任务,绝不抛出异常
网友评论