面向对象的 SQL 更新表方法,并在 catch 中重试

问题描述 投票:0回答:1

这是 C# 中方法的实现,但它可以是每种面向对象语言。我需要一种尝试多次更新表格的方法(例如

retryCount = 3
),这是我的第一个想法,但我还没有在 Stackoverflow 上看到它作为类似问题的答案。我的方法有问题还是只是另一个“好的”可能的解决方案?

void UpdateSomeSQLRows(uint retryCount = 3)
{
    try
    {
        // Some Code
    }
    catch (Exception e)
    {
        retryCount--;

        if (retryCount != 0)
            UpdateSomeSQLRows(retryCount);
    }
}

为什么我的解决方案在面向对象编程方面是好是坏?

c# oop exception recursion methods
1个回答
0
投票

有一个名为 Poly 的库可以很好地做到这一点,并具有许多高级功能。您还应该在下次尝试之前添加延迟。

internal class Program
{
    private static Policy retrySqlPolicy = 
        Policy
            .Handle<Exception>()
            .WaitAndRetry(3, retryAttempt => TimeSpan.FromSeconds(2));

    static void Main(string[] args)
    {
        UpdateSomeSQLRows();
    }

    static void UpdateSomeSQLRows()
    {
        retrySqlPolicy.Execute(() =>
        {
            // Some Code
        });
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.