csharp / expert
Snippet
Resilienz-Pipelines durch Delegaten höherer Ordnung
Fortgeschrittene Fehlerbehandlung nutzt Funktionen höherer Ordnung und Ausnahmefilter (`when`), um die Geschäftslogik von Resilienzstrategien zu entkoppeln. Durch die Übergabe von Delegaten und die Verwendung generischer Constraints können wiederverwendbare Ausführungswrapper erstellt werden, die spezifische Fehlerzustände behandeln, ohne den primären Codepfad zu belasten.
snippet.cs
csharp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public static class FaultTolerance{public static T ExecuteWithFallback<T, TException>(Func<T> action,Func<TException, T> fallback) where TException : Exception{try{return action();}catch (TException ex) when (ex.Data.Contains("Retryable")){return fallback(ex);}}public static async Task<T> WrapAsync<T>(Func<Task<T>> operation){// Higher-order function that adds logging context to any taskvar result = await operation();return result;}}
Erklärung
1
catch (TException ex) when (ex.Data.Contains("Retryable"))
Ein Ausnahmefilter, der es ermöglicht, dass der Catch-Block nur ausgelöst wird, wenn eine spezifische Laufzeitbedingung erfüllt ist.
2
Func<TException, T> fallback
Ein als Argument übergebener Delegat, der die Wiederherstellungslogik übernimmt, falls die Primäroperation fehlschlägt.