Exceptions, with emphasis on C++11 enhancements. Links:
Error handling possibilities
C++ standard library provides one of the following guarantees for every library operation:
basic for all operations: The basic invariants of all objects are maintained, and no resources, such as memory, are leaked. In particular, the basic invariants of every built-in and standard-library type guarantee that you can destroy an object or assign to it after every standard-library operation (§iso.184.108.40.206).
strong for key operations: in addition to providing the basic guarantee, either the operation succeeds, or it has no effect. This guarantee is provided for key operations, such as
insert() on a list, and
nothrow for some operations: in addition to providing the basic guarantee, some operations are guaranteed not to throw an exception. This guarantee is provided for a few simple operations, such as
swap() of two containers and