public override async Task HandleExceptionAsync(Func <CancellationToken, Task> action, CancellationToken actionCancellationToken = default(CancellationToken), Func <CancellationToken, Task> onExceptionCompensatingHandler = null, CancellationToken onExceptionCompensatingHandlerCancellationToken = default(CancellationToken)) { try { await action(actionCancellationToken); } catch (Exception ex) { ExceptionHandlingUtility.WrapActionWithExceptionHandling(async() => { if (CheckIfExceptionsNeedsToBePollyHandled(ex)) { PolicyWrap policyWrap = GetPolicyWrapWithProperFallbackActionSetForFallbackPoliciesAsync(ex, onExceptionCompensatingHandler); await policyWrap.ExecuteAsync(action, actionCancellationToken); } }, _logger); await HandleExceptionWithThrowCondition(ex, onExceptionCompensatingHandler, onExceptionCompensatingHandlerCancellationToken); } }
public override async Task HandleExceptionAsync(Func <CancellationToken, Task> action, CancellationToken actionCancellationToken = default(CancellationToken), Func <CancellationToken, Task> onExceptionCompensatingHandler = null, CancellationToken onExceptionCompensatingHandlerCancellationToken = default(CancellationToken)) { try { await action(actionCancellationToken); } catch (Exception ex) { ExceptionHandlingUtility.WrapActionWithExceptionHandling(async() => { if (_splittedTransientFailureExceptions.IsNotNullOrEmpty() && _splittedTransientFailureExceptions.Contains(ex.GetType().Name) && _policies.IsNotNullOrEmpty()) { PolicyWrap policyWrap = GetPolicyWrapWithProperFallbackActionSetForFallbackPoliciesAsync(ex, onExceptionCompensatingHandler); await policyWrap.ExecuteAsync(action, actionCancellationToken); } }, _logger); await HandleExceptionWithThrowCondition(ex, onExceptionCompensatingHandler, onExceptionCompensatingHandlerCancellationToken); } }
public override void HandleException(Action action, Action onExceptionCompensatingHandler = null) { try { action(); } catch (Exception ex) { ExceptionHandlingUtility.WrapActionWithExceptionHandling(() => { if (CheckIfExceptionsNeedsToBePollyHandled(ex)) { PolicyWrap policyWrap = GetPolicyWrapWithProperFallbackActionSetForFallbackPolicies(ex, onExceptionCompensatingHandler); policyWrap.Execute(action); } }, _logger); HandleExceptionWithThrowCondition(ex, onExceptionCompensatingHandler); } }
public override void HandleException(Action action, Action onExceptionCompensatingHandler = null) { try { action(); } catch (Exception ex) { ExceptionHandlingUtility.WrapActionWithExceptionHandling(() => { if (_splittedTransientFailureExceptions.IsNotNullOrEmpty() && _splittedTransientFailureExceptions.Contains(ex.GetType().Name) && _policies.IsNotNullOrEmpty()) { PolicyWrap policyWrap = GetPolicyWrapWithProperFallbackActionSetForFallbackPolicies(ex, onExceptionCompensatingHandler); policyWrap.Execute(action); } }, _logger); HandleExceptionWithThrowCondition(ex, onExceptionCompensatingHandler); } }