C++- Ausnahmen
C++-Ausnahmen
Beim Ausführen von C++-Code können verschiedene Fehler auftreten: Codierungsfehler des Programmierers, Fehler durch falsche Eingaben oder andere unvorhersehbare Dinge.
Wenn ein Fehler auftritt, stoppt C++ normalerweise und generiert eine Fehlermeldung. Der Fachausdruck dafür lautet: C++ wird eine Ausnahme werfen (throw an error).
C++ versuchen und fangen
Die Ausnahmebehandlung in C++ besteht aus drei Schlüsselwörtern: try
, throw
und catch
:
Mit der try
Anweisung können Sie einen Codeblock definieren, der während der Ausführung auf Fehler getestet werden soll.
Das throw
Schlüsselwort 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 wird, wenn im try-Block ein Fehler auftritt.
Die Schlüsselwörter try
und catch
kommen paarweise vor:
Beispiel
try {
// Block of code to try
throw exception;
// Throw an exception when a problem arise
}
catch () {
// Block of code to handle errors
}
Betrachten Sie das folgende Beispiel:
Beispiel
try {
int age = 15;
if (age >= 18) {
cout << "Access granted - you are old enough.";
} else {
throw (age);
}
}
catch (int
myNum) {
cout << "Access denied - You must be at least 18 years
old.\n";
cout << "Age is: " << myNum;
}
Beispiel erklärt
Wir verwenden den try
Block, um Code zu testen: Wenn die age
Variable kleiner als ist 18
, lösen wir throw
eine Ausnahme aus und behandeln sie in unserem catch
Block.
Im catch
Block fangen wir den Fehler ab und tun etwas dagegen. Die catch
Anweisung nimmt einen Parameter entgegen : In unserem Beispiel verwenden wir eine int
Variable ( myNum
) (weil wir eine Ausnahme vom int
Typ im try
Block ( age
) auslösen), um den Wert von auszugeben age
.
Wenn kein Fehler auftritt (z. B. wenn statt , age
also größer als 18 ist), wird der Block übersprungen:20
15
catch
Beispiel
int age = 20;
Sie können das throw
Schlüsselwort auch verwenden, um eine Referenznummer auszugeben, z. B. eine benutzerdefinierte Fehlernummer/ein Code für Organisationszwecke:
Beispiel
try {
int age = 15;
if (age >= 18) {
cout << "Access granted - you are old enough.";
} else {
throw 505;
}
}
catch (int myNum) {
cout << "Access denied - You must be at least 18 years old.\n";
cout << "Error number: " << myNum;
}
Jede Art von Ausnahmen behandeln (...)
Wenn Sie den im Block verwendeten throw
Typ nicht kennen try
, können Sie die „Drei-Punkte“-Syntax ( ...
) innerhalb des catch
Blocks verwenden, die jede Art von Ausnahme behandelt:
Beispiel
try {
int age = 15;
if (age >= 18) {
cout << "Access granted - you are old enough.";
} else {
throw 505;
}
}
catch (...) {
cout << "Access denied - You must be at least 18 years
old.\n";
}