Error handling
E.4
Design your error-handling strategy around invariants
Reason
To use an object it must be in a valid state (defined formally or informally by an invariant) and to recover from an error every object not destroyed must be in a valid state.
Note
An invariant is a logical condition for the members of an object that a constructor must establish for the public member functions to assume.
Enforcement
???