Information About

Abrahams Guarantees




The rules apply to class implementations (components) in the presence of exceptions; they are as follows:
  • The basic guarantee: that the invariants of the component are preserved, and no resources are leaked.

  • The strong guarantee: that the operation has either completed successfully or thrown an exception, leaving the program state exactly as it was before the operation started.

  • The no-throw guarantee: that the operation will not throw an exception.


Code that doesn't follow one of the above rules is called ''exception unsafe''.

The guarantees are named for David Abrahams , the member of the C++ Standard committee who formalized the guidelines.