Melancarkan logik semula dengan C# Lambda Expressions
Aplikasi yang teguh sering memerlukan mekanisme semula untuk mengendalikan kegagalan yang berpotensi dengan anggun. Walaupun gelung semula tradisional boleh menjadi rumit dan terdedah kepada kesilapan, ekspresi C# Lambda menawarkan penyelesaian yang lebih elegan dan boleh diguna semula.Artikel ini menunjukkan kelas
yang memudahkan logik semula. Fungsi teras terkandung dalam kaedah Retry
, yang menerima ekspresi lambda yang mewakili operasi untuk dikembalikan. Do
<code class="language-csharp">public static class Retry { public static void Do(Action action, TimeSpan retryInterval, int maxAttemptCount = 3) { var exceptions = new List<Exception>(); for (int attempted = 0; attempted < maxAttemptCount; attempted++) { try { action(); break; // Success! Exit the loop. } catch (Exception ex) { exceptions.Add(ex); if (attempted < maxAttemptCount - 1) { Thread.Sleep(retryInterval); } } } if (exceptions.Any()) { throw new AggregateException(exceptions); } } }</code>
ini membolehkan konfigurasi semula fleksibel: menentukan selang semula dan bilangan maksimum percubaan. Ia mengumpul sebarang pengecualian yang dihadapi dan melemparkan Do
jika semua percubaan gagal. AggregateException
adalah mudah dan intuitif: Retry
<code class="language-csharp">Retry.Do(() => SomeFunctionThatMightFail(), TimeSpan.FromSeconds(1));</code>
Atas ialah kandungan terperinci Bagaimanakah ekspresi C# Lambda dengan bersih melaksanakan logik semula untuk mengendalikan kegagalan yang berpotensi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!