Création d'applications C # robustes avec logique de réutilisation réutilisable
Gestion des erreurs temporaires gracieusement est cruciale pour créer des logiciels fiables. Au lieu d'incorporer la logique de réessayer directement dans votre code, un mécanisme de réessayer réutilisable améliore la clarté du code et la maintenabilité. Cet article montre comment créer une fonction de "réessayer" flexible en C # pour gérer les défaillances transitoires.
au-delà des simples boucles de réchauffement
Bien que des boucles de réchauffement de base soient possibles, en utilisant une instruction catch
> peut masquer les erreurs critiques qui ne doivent pas être réactivées. Une approche plus sophistiquée est nécessaire.
Un wrapper de réchaume flexible à l'aide de lambdas
La solution optimale utilise un wrapper de réchaume basé sur Lambda. Cela permet un contrôle précis sur les paramètres de réessayer: l'action pour réessayer, l'intervalle entre les tentatives et les tentatives de réessayer maximales. Considérez la classe Retry
suivante:
<code class="language-csharp">public static class Retry { public static void Do(Action action, TimeSpan retryInterval, int maxAttemptCount = 3) { // ...Implementation } public static T Do<T>(Func<T> action, TimeSpan retryInterval, int maxAttemptCount = 3) { // ...Implementation } }</code>
Exemples d'application pratiques
La classe Retry
simplifie l'intégration de la logique de réessayer:
<code class="language-csharp">// Retry an action three times with a one-second delay Retry.Do(() => SomeFunctionThatMightFail(), TimeSpan.FromSeconds(1)); // Retry a function returning a value, with four attempts int result = Retry.Do(() => SomeFunctionReturningInt(), TimeSpan.FromSeconds(1), 4); // Indefinite retry with a sleep mechanism (use cautiously!) while (true) { try { Retry.Do(() => PerformOperation()); break; } catch (Exception ex) { Thread.Sleep(1000); // Consider more sophisticated backoff strategies } }</code>
Conclusion: réutilisable réutilisable la fiabilité améliorée
Une fonction de réessayer à usage général est un outil précieux pour améliorer la robustesse de vos applications C #. Cependant, n'oubliez pas que la logique de réessayer doit être utilisée judicieusement. Il est essentiel d'éviter de masquer les problèmes sous-jacents et non transitoires. L'utilisation de stratégies de réessayer plus avancées, telles que le backoff exponentielle, peut encore améliorer la résilience de votre système.
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!