Robuste et réutilisable Logic de réessayer
Gestion des défaillances intermittentes dans les opérations nécessite un mécanisme de réessayer fiable. Au lieu de boucles répétitives et manuelles, une fonction de réessayer générique offre une solution supérieure pour l'amélioration de la maintenabilité du code et de la résilience.
Une fonction de réessayer universelle
Cette approche introduit une fonction de réessayer polyvalente, TryThreeTimes()
(ou un nom plus descriptif), qui simplifie la logique de réessayer pour n'importe quelle méthode. La fonction permet la spécification des paramètres de réessayer: le nombre de tentatives, l'intervalle entre les tentatives et la méthode à exécuter.
Implémentation de la fonction de réessayer
La fonction RETRY CORE peut être implémentée comme suit:
<code class="language-csharp">public static class RetryHelper { public static void Execute( Action action, TimeSpan retryInterval, int maxAttemptCount = 3) { // ... implementation details ... } public static T Execute<T>( Func<T> action, TimeSpan retryInterval, int maxAttemptCount = 3) { // ... implementation details ... } }</code>
La méthode Execute
itère à travers les tentatives de réchauffement spécifiées, s'arrêtant entre chacun. Toutes les exceptions rencontrées sont collectées. Après toutes les tentatives, si des échecs se sont produits, un AggregateException
est lancé, fournissant des détails sur toutes les exceptions.
en utilisant la fonction de réessayer
L'utilisation de la fonction RETRY est simple:
RetryHelper.Execute(() => SomeFunctionThatMightFail(), TimeSpan.FromSeconds(1));
RetryHelper.Execute(SomeFunctionThatMightFail, TimeSpan.FromSeconds(1));
int result = RetryHelper.Execute(SomeFunctionReturningInt, TimeSpan.FromSeconds(1), 4);
Avantages clés
Cette approche générique de réessayer offre plusieurs avantages:
En utilisant une fonction de réessayer générique, les développeurs peuvent créer des applications plus robustes, maintenables et résilientes. Cette approche favorise le code plus propre et simplifie la gestion des erreurs transitoires.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!