RateLimitRejectedException
Exception thrown when a delegate executed through a IRateLimitPolicy is rate-limited.
using System;
using System.Runtime.Serialization;
namespace Polly.RateLimit
{
[Serializable]
public class RateLimitRejectedException : ExecutionRejectedException
{
public TimeSpan RetryAfter { get; set; }
public RateLimitRejectedException(TimeSpan retryAfter)
: this(retryAfter, DefaultMessage(retryAfter))
{
}
public RateLimitRejectedException(TimeSpan retryAfter, Exception innerException)
: base(DefaultMessage(retryAfter), innerException)
{
SetRetryAfter(retryAfter);
}
public RateLimitRejectedException(TimeSpan retryAfter, string message)
: base(message)
{
SetRetryAfter(retryAfter);
}
public RateLimitRejectedException(TimeSpan retryAfter, string message, Exception innerException)
: base(message, innerException)
{
SetRetryAfter(retryAfter);
}
private void SetRetryAfter(TimeSpan retryAfter)
{
if (retryAfter < TimeSpan.Zero)
throw new ArgumentOutOfRangeException("retryAfter", retryAfter, "The retryAfter parameter must be a TimeSpan greater than or equal to TimeSpan.Zero.");
RetryAfter = retryAfter;
}
private static string DefaultMessage(TimeSpan retryAfter)
{
return $"""{retryAfter}";
}
protected RateLimitRejectedException(SerializationInfo info, StreamingContext context)
: base(info, context)
{
}
}
}