C++ Ausnahmen
C++ Ausnahmen
Bei der Ausführung von C++-Code können unterschiedliche Fehler auftreten: Codierungsfehler des Programmierers, Fehler aufgrund falscher Eingaben oder andere unvorhersehbare Dinge.
Wenn ein Fehler auftritt, stoppt C++ normalerweise und generiert eine Fehlermeldung. Der Fachausdruck dafür lautet: C++ löst eine Ausnahme aus (wirft einen Fehler aus).
C++ try und catch
Die Ausnahmebehandlung in C++ besteht aus drei Schlüsselwörtern: try
, throw
und catch
:
Mit der Anweisung try
können Sie einen Codeblock definieren, der während der Ausführung auf Fehler getestet werden soll.
Das Schlüsselwort throw
löst eine Ausnahme aus, wenn ein Problem erkannt wird, wodurch wir einen benutzerdefinierten Fehler erstellen können.
Mit der catch
-Anweisung können Sie einen Codeblock definieren, der ausgeführt werden soll, wenn im try-Block ein Fehler auftritt.
Die Schlüsselwörter try
und catch
kommen paarweise vor:
Beispiel
try {
// Codeblock für try
throw exception; // Lösen Sie eine Ausnahme aus, wenn ein Problem auftritt
}
catch () {
// Codeblock zur Fehlerbehandlung
}
Betrachten Sie das folgende Beispiel:
Beispiel
try {
int age = 15;
if (age >= 18) {
cout << "Zugang gewährt – Sie sind alt genug.";
} else {
throw (age);
}
}
catch (int myNum) {
cout << "Zugriff verweigert – Sie müssen mindestens 18 Jahre alt sein.\n";
cout << "Age is: " << myNum;
}
Try it Yourself »
Beispiel erklärt
Wir verwenden den Block try
, um Code zu testen: wenn die Variable age
kleiner als 18
ist, werden wir throw
eine Ausnahme und behandeln Sie sie in unserem catch
-Block.
Im catch
-Block fangen wir den Fehler ab und unternehmen etwas dagegen. Die catch
-Anweisung benötigt einen Parameter: In unserem Beispiel verwenden wir eine int
-Variable (myNum
) (weil wir eine Ausnahme vom Typ int
im try
-Block (age
)), um den Wert von age
auszugeben.
Wenn kein Fehler auftritt (z. B. wenn age
20
anstelle von ist 15
, was bedeutet, dass er größer als 18 ist), wird der catch
-Block übersprungen:
Sie können auch das Schlüsselwort throw
verwenden, um eine Referenznummer auszugeben, beispielsweise eine benutzerdefinierte Fehlernummer/einen Fehlercode für Organisationszwecke (505
in unserem Beispiel):
Beispiel
try {
int age = 15;
if (age >= 18) {
cout << "Zugang gewährt – Sie sind alt genug.";
} else {
throw 505;
}
}
catch (int myNum) {
cout << "Zugriff verweigert – Sie müssen mindestens 18 Jahre alt sein.\n";
cout << "Error number: " << myNum;
}
Try it Yourself »
Behandeln Sie jede Art von Ausnahmen (...)
Wenn Sie den throw
Typ nicht kennen, der im try
-Block verwendet wird, sind Sie hier richtig kann die „Drei-Punkte“-Syntax (...
) innerhalb des catch
-Blocks verwenden, der alle verarbeitet Art der Ausnahme:
Beispiel
try {
int age = 15;
if (age >= 18) {
cout << "Zugang gewährt – Sie sind alt genug.";
} else {
throw 505;
}
}
catch (...) {
cout << "Zugriff verweigert – Sie müssen mindestens 18 Jahre alt sein.\n";
}
Try it Yourself »