Le fichier d'en-tête <exception> fournit des fonction et des classes pour la gestion des exception. Une des classes de base est exception:
class exception { public: exception() throw(); exception(const exception&) throw(); exception& operator=(const exception&) throw(); virtual ~exception() throw(); virtual const char *what() const throw(); };
Le fichier d'en-tête <stdexcept> fournit une petite hiérarchie de classes d'exception qui peuvent être lancées (throw) ou attrapées (catch):
exceptionlogic_errordomain_errorinvalid_argumentlength_errorout_of_rangeruntime_errorrange_erroroverflow_errorunderflow_errorLes exceptions logic_error sont lancées quand le programme rencontre une erreur interne provoquée par l'utilisation erronée d'une fonction. Elles sont évitables au moment du codage.
Les exceptions runtime_error sont lancées par une erreur indépendante du programme lui même et ne peuvent être évitées directement lors de la création du programme.