Basics of Exception Safety Exception Safety Guarantees (Dave Abrahams) basic guarantee invariants preserved (the object remains in a consistent state) no resources leaked strong guarantee state remains the same if an exception is thrown no-throw guarantee necessary for proper cleanup when exceptions are thrown exception-safe code meets the basic exception-safety guarantee exception-neutral code passes all exceptions to the caller purely functional code is always exception-safe