这是 C# 中方法的实现,但它可以是每种面向对象语言。我需要一种尝试多次更新表格的方法(例如
retryCount = 3
),这是我的第一个想法,但我还没有在 Stackoverflow 上看到它作为类似问题的答案。我的方法有问题还是只是另一个“好的”可能的解决方案?
void UpdateSomeSQLRows(uint retryCount = 3)
{
try
{
// Some Code
}
catch (Exception e)
{
retryCount--;
if (retryCount != 0)
UpdateSomeSQLRows(retryCount);
}
}
为什么我的解决方案在面向对象编程方面是好是坏?
有一个名为 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
});
}
}