Maison > développement back-end > C++ > le corps du texte

Le programme C++ crée une exception personnalisée

WBOY
Libérer: 2023-08-26 19:53:05
avant
948 Les gens l'ont consulté

Le programme C++ crée une exception personnalisée

L'exception est un concept essentiel du C++. Des exceptions se produisent lorsqu'une opération indésirable ou impossible se produit pendant l'exécution. La gestion de ces opérations indésirables ou impossibles en C++ est appelée gestion des exceptions. La gestion des exceptions utilise principalement trois mots-clés spécifiques, à savoir « try », « catch » et « throw ». Le mot-clé « try » est utilisé pour exécuter du code pouvant rencontrer des exceptions, le mot-clé « catch » est utilisé pour gérer ces exceptions et le mot-clé « throws » est utilisé pour créer des exceptions. Les exceptions en C++ peuvent être divisées en deux types, à savoir les exceptions STL et les exceptions définies par l'utilisateur. Dans cet article, nous nous concentrons sur la façon de créer ces exceptions personnalisées. Plus de détails sur la gestion des exceptions peuvent être trouvés ici.

Créez des exceptions personnalisées à l'aide d'une seule classe

Tout d'abord, nous avons vu comment créer des exceptions personnalisées à l'aide d'une seule classe. Pour ce faire, nous devons définir une classe et lever une exception à partir de cette classe.

Grammaire

//user-defined class
class Test{};
try{
   //throw object of that class
   throw Test();
}
catch(Test t) {
   ....
}
Copier après la connexion

Exemple

se traduit par :

Exemple

#include <iostream>
using namespace std;

//define a class
class Test{};

int main() {
   try{
      //throw object of that class
      throw Test();
   }
   catch(Test t) {
      cout << "Caught exception 'Test'!" << endl;
   }

   return 0;
}
Copier après la connexion

Sortie

Caught exception 'Test'!
Copier après la connexion
Le bloc

‘try’ lancera les exceptions de cette classe, tandis que le bloc ‘catch’ n’interceptera que les exceptions de cette classe spécifique. S'il existe deux classes d'exceptions définies par l'utilisateur, elles doivent être traitées séparément.

Créez des exceptions personnalisées à l'aide de plusieurs classes

Le processus est simple, comme prévu, s'il y a plusieurs exceptions, chacune doit être traitée individuellement.

Grammaire

//user-defined class
class Test1{};
class Test2{};
try{
   //throw object of the first class
   throw Test1();
}
catch(Test1 t){
   ....
}
try{
   //throw object of the second class
   throw Test2();
}
catch(Test2 t){
   ....
}
Copier après la connexion

Exemple

se traduit par :

Exemple

#include <iostream>
using namespace std;

//define multiple classes
class Test1{};
class Test2{};

int main() {
   try{
      //throw objects of multiple classes
      throw Test1();
   }
   catch(Test1 t) {
      cout << "Caught exception 'Test1'!" << endl;
   }
   try{
      throw Test2();
   }
   catch(Test2 t) {
      cout << "Caught exception 'Test2'!" << endl;
   }

   return 0;
}
Copier après la connexion

Sortie

Caught exception 'Test1'!
Caught exception 'Test2'!
Copier après la connexion

Nous avons dû utiliser deux blocs try-catch différents pour gérer deux catégories différentes d'exceptions. Voyons maintenant si nous pouvons créer et gérer des exceptions à l'aide de constructeurs.

Créez des exceptions personnalisées à l'aide de constructeurs

Nous pouvons utiliser le constructeur de classe pour créer des exceptions personnalisées. Dans l'exemple ci-dessous, nous pouvons voir que le lancement et la gestion des exceptions sont gérés à l'intérieur du constructeur de classe.

Exemple

se traduit par :

Exemple

#include <iostream>
using namespace std;

//define a class
class Test1{
   string str;
   public:
      //try-catch in the constructor
      Test1(string str){
         try{
            if (str == "Hello"){
               throw "Exception! String cannot be 'Hello'!";
            }
            this->str = str;   
         }
         catch(const char* s) {
            cout << s << endl;
         }
      }
};

int main() {
   Test1 t("Hello");
   return 0;
}
Copier après la connexion

Sortie

Exception! String cannot be 'Hello'!
Copier après la connexion

La gestion des exceptions est l'une des fonctionnalités les plus importantes fournies par C++. Nous pouvons hériter de la classe d’exceptions C++ et l’utiliser pour implémenter la gestion des exceptions, mais il ne s’agit que d’une bonne pratique et n’est pas obligatoire pour créer des exceptions personnalisées. L'avantage d'hériter de la classe d'exception C++ est que s'il existe une instruction catch normale interceptant std::exception, elle peut gérer n'importe quelle exception définie par l'utilisateur sans avoir besoin de connaître les détails spécifiques. Il convient de noter que l'instruction 'throws' ne fonctionne que dans le bloc 'try', sinon elle ne fonctionnera pas. L'instruction 'catch' ne peut gérer que les exceptions levées par les classes définies par l'utilisateur ou certaines classes STL.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!