capypad
0 Tage Serie
cpp / beginner
Snippet

Ausnahmebehandlung mit try und catch

Ausnahmebehandlung verhindert Programmabstürze, wenn Fehler auftreten. Der try-Block enthält Code, der eine Ausnahme auslösen könnte, und catch-Blöcke behandeln spezifische Ausnahmetypen. Wenn eine Ausnahme ausgelöst wird, springt die Programmausführung zum passenden catch-Block. Dies ist sauberer als Rückgabewerte für jeden Funktionsaufruf zu überprüfen.

snippet.cpp
cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <stdexcept>
 
int divide(int a, int b) {
if (b == 0) {
throw std::runtime_error("Division by zero not allowed");
}
return a / b;
}
 
int main() {
try {
std::cout << divide(10, 2) << std::endl;
std::cout << divide(5, 0) << std::endl;
}
catch (const std::runtime_error& e) {
std::cout << "Error: " << e.what() << std::endl;
}
std::cout << "Program continues..." << std::endl;
return 0;
}
Erklärung
1
throw std::runtime_error("...")
Löst eine Ausnahme mit einer Fehlermeldung aus
2
catch (const std::runtime_error& e)
Fängt die Ausnahme ab und bindet sie an Referenz e
3
e.what()
Gibt die Fehlermeldungszeichenkette aus der Ausnahme zurück
4
Program continues...
Diese Zeile wird ausgeführt, weil die Ausnahme abgefangen wurde