<PackageReference Include="Polly" Version="6.0.0-v6alpha0001" />

FallbackPolicy

A fallback policy that can be applied to delegates.
using System; using System.Collections.Generic; using System.Diagnostics; using System.Threading; using System.Threading.Tasks; namespace Polly.Fallback { public class FallbackPolicy : Policy, IFallbackPolicy, IsPolicy { internal FallbackPolicy(Action<Action<Context, CancellationToken>, Context, CancellationToken> exceptionPolicy, IEnumerable<ExceptionPredicate> exceptionPredicates) : base(exceptionPolicy, exceptionPredicates) { } [DebuggerStepThrough] internal override TResult ExecuteInternal<TResult>(Func<Context, CancellationToken, TResult> action, Context context, CancellationToken cancellationToken) { throw new InvalidOperationException(string.Format("You have executed the generic .Execute<{0}> method on a non-generic {1}. A non-generic {2} only defines a fallback action which returns void; it can never return a substitute {3} value. To use {4} to provide fallback {5} values you must define a generic fallback policy {6}<{7}>. For example, define the policy as Policy<{8}>.Handle<Whatever>.Fallback<{9}>(/* some {10} value or Func<..., {11}> */);", "TResult", "FallbackPolicy", "FallbackPolicy", "TResult", "FallbackPolicy", "TResult", "FallbackPolicy", "TResult", "TResult", "TResult", "TResult", "TResult")); } internal FallbackPolicy(Func<Func<Context, CancellationToken, Task>, Context, CancellationToken, bool, Task> asyncExceptionPolicy, IEnumerable<ExceptionPredicate> exceptionPredicates) : base(asyncExceptionPolicy, exceptionPredicates) { } [DebuggerStepThrough] internal override Task<TResult> ExecuteAsyncInternal<TResult>(Func<Context, CancellationToken, Task<TResult>> action, Context context, CancellationToken cancellationToken, bool continueOnCapturedContext) { throw new InvalidOperationException(string.Format("You have executed the generic .Execute<{0}> method on a non-generic {1}. A non-generic {2} only defines a fallback action which returns void; it can never return a substitute {3} value. To use {4} to provide fallback {5} values you must define a generic fallback policy {6}<{7}>. For example, define the policy as Policy<{8}>.Handle<Whatever>.Fallback<{9}>(/* some {10} value or Func<..., {11}> */);", "TResult", "FallbackPolicy", "FallbackPolicy", "TResult", "FallbackPolicy", "TResult", "FallbackPolicy", "TResult", "TResult", "TResult", "TResult", "TResult")); } } }