Heim > Backend-Entwicklung > C++ > Hauptteil

Das C++-Programm erstellt eine benutzerdefinierte Ausnahme

WBOY
Freigeben: 2023-08-26 19:53:05
nach vorne
1045 Leute haben es durchsucht

Das C++-Programm erstellt eine benutzerdefinierte Ausnahme

Exception ist ein Kernkonzept von C++. Ausnahmen treten auf, wenn während der Ausführung ein unerwünschter oder unmöglicher Vorgang auftritt. Die Behandlung dieser unerwünschten oder unmöglichen Vorgänge in C++ wird als Ausnahmebehandlung bezeichnet. Bei der Ausnahmebehandlung werden hauptsächlich drei spezifische Schlüsselwörter verwendet: „try“, „catch“ und „throw“. Das Schlüsselwort „try“ wird verwendet, um Code auszuführen, der auf Ausnahmen stoßen kann, das Schlüsselwort „catch“ wird zur Behandlung dieser Ausnahmen verwendet und das Schlüsselwort „throws“ wird zum Erstellen von Ausnahmen verwendet. Ausnahmen in C++ können in zwei Typen unterteilt werden, nämlich STL-Ausnahmen und benutzerdefinierte Ausnahmen. In diesem Artikel konzentrieren wir uns auf die Erstellung dieser benutzerdefinierten Ausnahmen. Weitere Einzelheiten zur Ausnahmebehandlung finden Sie hier.

Erstellen Sie benutzerdefinierte Ausnahmen mit einer einzelnen Klasse

Zuerst haben wir gesehen, wie man mit einer einzelnen Klasse benutzerdefinierte Ausnahmen erstellt. Dazu müssen wir eine Klasse definieren und eine Ausnahme von dieser Klasse auslösen.

Grammatik

//user-defined class
class Test{};
try{
   //throw object of that class
   throw Test();
}
catch(Test t) {
   ....
}
Nach dem Login kopieren

Beispiel

wird übersetzt als:

Beispiel

#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;
}
Nach dem Login kopieren

Ausgabe

Caught exception 'Test'!
Nach dem Login kopieren
Der

‘try‘-Block löst Ausnahmen dieser Klasse aus, während der ‚catch‘-Block nur Ausnahmen dieser bestimmten Klasse abfängt. Wenn es zwei benutzerdefinierte Ausnahmeklassen gibt, müssen diese separat behandelt werden.

Erstellen Sie benutzerdefinierte Ausnahmen mit mehreren Klassen

Der Prozess ist erwartungsgemäß einfach. Wenn es mehrere Ausnahmen gibt, muss jede einzeln behandelt werden.

Grammatik

//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){
   ....
}
Nach dem Login kopieren

Beispiel

wird übersetzt als:

Beispiel

#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;
}
Nach dem Login kopieren

Ausgabe

Caught exception 'Test1'!
Caught exception 'Test2'!
Nach dem Login kopieren

Wir mussten zwei verschiedene Try-Catch-Blöcke verwenden, um zwei verschiedene Kategorien von Ausnahmen zu behandeln. Sehen wir uns nun an, ob wir mithilfe von Konstruktoren Ausnahmen erstellen und behandeln können.

Erstellen Sie benutzerdefinierte Ausnahmen mithilfe von Konstruktoren

Wir können den Klassenkonstruktor verwenden, um benutzerdefinierte Ausnahmen zu erstellen. Im folgenden Beispiel können wir sehen, dass das Auslösen und Behandeln von Ausnahmen im Klassenkonstruktor verwaltet wird.

Beispiel

wird übersetzt als:

Beispiel

#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;
}
Nach dem Login kopieren

Ausgabe

Exception! String cannot be 'Hello'!
Nach dem Login kopieren

Die Ausnahmebehandlung ist eine der wichtigsten Funktionen von C++. Wir können die C++-Ausnahmeklasse erben und sie zum Implementieren der Ausnahmebehandlung verwenden. Dies ist jedoch nur eine bewährte Vorgehensweise und nicht erforderlich, um benutzerdefinierte Ausnahmen zu erstellen. Der Vorteil der Vererbung der C++-Ausnahmeklasse besteht darin, dass bei einer normalen Catch-Anweisung, die std::Exception abfängt, jede benutzerdefinierte Ausnahme behandelt werden kann, ohne dass die spezifischen Details bekannt sein müssen. Es ist zu beachten, dass die „throws“-Anweisung nur innerhalb des „try“-Blocks funktioniert, andernfalls funktioniert sie nicht. Die „catch“-Anweisung kann nur Ausnahmen verarbeiten, die von benutzerdefinierten Klassen oder bestimmten STL-Klassen ausgelöst werden.

Das obige ist der detaillierte Inhalt vonDas C++-Programm erstellt eine benutzerdefinierte Ausnahme. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:tutorialspoint.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage