std::exception interface (débat si vous devriez attraper cela)
std::bad_alloc échec de l'allocation de stockage
std::bad_array_new_length longueur de tableau non valide
std::bad_cast exécution d'une conversion dynamique invalide
std::bad_exception signale qu'une exception incorrecte a été lancée
std::bad_function_call lancé par une fonction std :: function "null"
std::bad_typeid utilisation du typeinfo sur un pointeur nul
std::bad_weak_ptr construction d'un std :: shared_ptr à partir d'un std :: bad_weak_ptr
std::logic_error erreurs détectables avant l'exécution du programme
std::domain_error paramètre en dehors de la plage valide
std::future_error violation d'une condition std :: promise / std :: future
std::invalid_argument argument invalide
std::length_error la longueur dépasse sa taille maximale autorisée
std::out_of_range valeur d'argument pas dans sa plage attendue
std::runtime_error erreurs détectables lors de l'exécution du programme
std::overflow_error erreur de débordement arithmétique.
std::underflow_error erreur de sous-débit arithmétique.
std::range_error erreurs de plage dans les calculs internes
std::regex_error erreurs de la bibliothèque d'expressions régulières.
std::system_error du système d'exploitation ou d'une autre API C
std::ios_base::failure Erreur d'entrée ou de sortie
Source: http://en.cppreference.com/w/cpp/error/exception
En pratique, la plupart des exceptions sont des exceptions personnalisées dérivées de logic_error
et runtime_error
. Ce n'est pas que ces derniers soient négligés, mais que de nombreuses exceptions sont spécifiques à un domaine.
Gardez à l'esprit qu'une exception doit refléter ce qui s'est mal passé et pas qui l'a déclenchée. (Pas de "MyProgramException")