Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah ekspresi C# Lambda dengan bersih melaksanakan logik semula untuk mengendalikan kegagalan yang berpotensi?

Bagaimanakah ekspresi C# Lambda dengan bersih melaksanakan logik semula untuk mengendalikan kegagalan yang berpotensi?

Barbara Streisand
Lepaskan: 2025-01-29 08:46:13
asal
178 orang telah melayarinya

How Can C# Lambda Expressions Cleanly Implement Retry Logic for Handling Potential Failures?

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

inilah pelaksanaan umum:

<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>
Salin selepas log masuk
Kaedah

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

menggunakan kelas

adalah mudah dan intuitif: Retry

<code class="language-csharp">Retry.Do(() => SomeFunctionThatMightFail(), TimeSpan.FromSeconds(1));</code>
Salin selepas log masuk
Pendekatan ini memberikan cara yang lebih bersih, lebih dapat dipelihara, dan boleh diguna semula untuk melaksanakan logik semula dalam C#, memanfaatkan kuasa dan kesimpulan ekspresi Lambda untuk strategi pengendalian kesilapan yang lebih efisien dan mantap.

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan