cpp / intermediate
Snippet
Funktionale Fehlerbehandlung mit Optional
std::optional repräsentiert einen Wert, der existieren kann oder nicht. Es ist eine sicherere Alternative zur Rückgabe von speziellen Fehlerwerten (wie -1) oder Null-Pointern, da es den Aufrufer zwingt, explizit zu prüfen, ob ein Wert vorhanden ist.
snippet.cpp
cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>#include <optional>std::optional<int> find_even(int value) {if (value % 2 == 0) return value;return std::nullopt;}int main() {auto result = find_even(7);if (result.has_value()) {std::cout << "Found: " << *result << std::endl;} else {std::cout << "No even value found." << std::endl;}// Using value_or for a default fallbackstd::cout << "Result or default: " << find_even(3).value_or(0) << std::endl;return 0;}
Erklärung
1
return std::nullopt;
Gibt explizit einen 'kein Wert'-Zustand zurück, um einen Fehler oder das Fehlen eines Wertes anzuzeigen.
2
find_even(3).value_or(0)
Gibt den enthaltenen Wert zurück, falls vorhanden, andernfalls den angegebenen Standardwert (0).