首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Polly同步重试

Polly同步重试
EN

Stack Overflow用户
提问于 2021-03-13 09:53:50
回答 1查看 614关注 0票数 1

我对Polly很熟悉,我试着从一个简单的重试机制开始。

下面是代码:

代码语言:javascript
复制
static void Main(string[] args)
{
        Policy
            .Handle<NotImplementedException>()
            .WaitAndRetry(5, retryAttempt => TimeSpan.FromSeconds(100), (exception, i, arg3) => Console.WriteLine(i))
            .Execute(() => { Console.WriteLine(Do()); });
}

private static string Do()
{
    return ++_counter < 3
        ? throw new NotImplementedException()
        : "done";
    }
}

我希望抛出的NotImplementedException被Polly捕获并重新尝试,直到预期的结果返回为止。但在一开始,异常引发了程序停止!我在哪里犯了个错误?提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-13 10:29:56

如果我要做同样的事,我可以按我的方式做。

代码语言:javascript
复制
class Program
    {
        static int _counter = 0;
        static void Main(string[] args)
        {
            Console.WriteLine(Policy
           .Handle<NotImplementedException>()
           .WaitAndRetry(3, retryAttempt => TimeSpan.FromMilliseconds(100), (exception, i, arg3) => Console.WriteLine(i))
           .Execute<string>(() => Do()));
            Console.ReadLine();
        }
        private static string Do()
        {
            Console.WriteLine(_counter);
            return ++_counter < 3
                ? throw new NotImplementedException()
                : "done";
        }
    }

解释:

在您的代码中,您试图在执行中执行Console.WriteLine,它会抛出异常,使Console.WriteLine无法处理这些事情。实际上,您必须执行Do方法,并期望成功的结果和Console.WriteLine的句柄,因为它将是字符串。

注意:我仍然觉得你的代码也很好。尝试从控制台执行此操作,而不是调试。

由于下列设置,您的代码无法在调试模式下工作。取消选中此复选框。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66612085

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档