csharp / expert
Snippet
Funktionale Retries höherer Ordnung
Verwendet Funktionen höherer Ordnung und Ausnahme-Filter, um einen wiederverwendbaren Retry-Mechanismus zu implementieren. Die 'when'-Klausel stellt sicher, dass der Catch-Block nur ausgelöst wird, wenn noch Versuche übrig sind.
snippet.cs
csharp
1
2
3
4
5
6
7
8
9
public static T ExecuteWithRetry<T>(Func<T> action, int attempts = 3){for (int i = 0; i < attempts; i++){try { return action(); }catch (Exception) when (i < attempts - 1) { /* Log retry */ }}throw new InvalidOperationException("Final attempt failed.");}
Erklärung
1
Func<T> action
Akzeptiert ein Delegat, das die auszuführende Logik darstellt.
2
catch (Exception) when (i < attempts - 1)
Ausnahmefilter, der verhindert, dass die Ausnahme im letzten Schleifendurchlauf abgefangen wird.