C++ nous fournit une classe de gestion des exceptions standard , qui est utilisée pour lancer des exceptions lorsque les fonctions de la bibliothèque standard C++ sont exécutées. La structure hiérarchique des classes d'exceptions standard fournies par C++ est la suivante :
On peut voir que toutes les classes d'exception héritent de la classe de base d'exception. Logic_error et runtime_error sous la classe d'exception sont deux catégories relativement grandes, comprenant plusieurs auto-classes. Elles sont divisées en tableaux pour représenter les erreurs logiques et les erreurs d'exécution .
Donnez des exemples, tels que :
1. Lorsque nous utilisons new pour ouvrir de la mémoire, si l'espace est insuffisant, une exception bad_alloc sera levée.
2. Lorsque nous utilisons Dynamic_cast() pour effectuer une conversion de type dynamique et que nous échouons, une exception bad_typeid sera levée.
3. Lorsque la valeur calculée dépasse la plage maximale représentée par le type, une exception overflow_error est levée, indiquant un dépassement d'opération. De même, underflow_error indique un dépassement inférieur d'opération.
4. Lorsque nous utilisons l'indice de classe de chaîne mais qu'il sort des limites, une exception out_of_range est levée.
Attendez... attendez... s'il vous plaît, découvrez-en plus par vous-même.
Il convient de noter que lorsque vous utilisez la classe d'exception standard fournie avec C++, vous devez inclure le fichier d'en-tête correspondant, car les classes exception et bad_exception sont définies dans l'exception du fichier d'en-tête, la classe bad_alloc est définie dans le fichier d'en-tête new, et la classe bad_typeid est définie dans le fichier d'en-tête typeinfo. la classe ios_base::failure est définie dans le fichier d'en-tête ios et d'autres classes d'exception sont définies dans stdsauf.
Ci-dessous, je vais vous montrer comment utiliser la classe d'exception standard C++ :
#include<iostream>#include<new>#include<stdsauf>usingnamespacestd;//Gestion des exceptions intmain(){string*s;try{s=newstring(www.dotcpp.com);cout<<s->substr( 15,5);}catch(bad_alloc&t){cout<<Exceptionoccurred:<<t.what()<<endl;}catch(out_of_range&t){cout<<Exceptionoccurred:<<t.what()<<endl;} retour0;}
Les résultats en cours d'exécution sont les suivants :
Essayez-le par vous-même et apprenez à l'utiliser !