【发布时间】:2021-01-18 18:12:47
【问题描述】:
我对 Polly 很陌生,我正在尝试从最基础的开始了解其工作原理。
为了测试重试次数,我尝试创建一个有 33% 的代码(打印)以生成 DivideByZeroException。生成错误时,它会上升到 policy.Execute 似乎不由 Polly 管理。
有人可以帮我调整这段代码吗?我正在使用 .Net Framework 4.7.2。
using System;
using Polly;
class Program
{
static void Main(string[] args)
{
var policy = Policy
.Handle<DivideByZeroException>()
.Retry();
policy.Execute(() => Print());
Console.ReadKey();
}
private static void Print()
{
var rand = new Random();
int a = rand.Next(1000, 2000);
int b = rand.Next(0, 2);
Console.WriteLine("a = {0} - b {1}", a, b);
int c = a / b;
Console.WriteLine("c = {0}", c);
}
}
【问题讨论】:
-
你能举一个例子来说明你看到的和你期望看到的吗?请注意,由于您使用的是
Random,因此实际上可能不会发生异常。 -
尝试将
Random作为单个静态变量创建一次,而不是每次Print运行时都创建一个新的Random。
标签: c# transient polly retry-logic resiliency