public static ContinuationExpression OnException(this IHasErrorHandlers handlers, Type type) { if (!type.CanBeCastTo <Exception>()) { throw new InvalidOperationException($"{type.FullName} is not an Exception type"); } return(typeof(OnExceptionExpression <>).CloseAndBuildAs <ContinuationExpression>(handlers, type)); }
public OnExceptionExpression(IHasErrorHandlers parent, Func <T, bool> filter) { _handler = new Lazy <ErrorHandler>(() => { var handler = new ErrorHandler(); handler.AddCondition(new ExceptionTypeMatch <T>(filter)); parent.ErrorHandlers.Add(handler); return(handler); }); }
internal static IContinuation DetermineContinuation(this IHasErrorHandlers errorHandling, Envelope envelope, Exception ex) { foreach (var handler in errorHandling.ErrorHandlers) { var continuation = handler.DetermineContinuation(envelope, ex); if (continuation != null) { return(continuation); } } return(null); }
public OnExceptionExpression(IHasErrorHandlers parent) : this(parent, e => true) { }
public static ContinuationExpression OnException <T>(this IHasErrorHandlers handlers, Func <T, bool> filter = null) where T : Exception { return(new OnExceptionExpression <T>(handlers, filter)); }
public static void HandleErrorsWith(this IHasErrorHandlers errorHandling, IErrorHandler errorHandler) { errorHandling.ErrorHandlers.Add(errorHandler); }
public static void HandleErrorsWith <T>(this IHasErrorHandlers errorHandling) where T : IErrorHandler, new() { errorHandling.HandleErrorsWith(new T()); }
public override void SetUp() { _errorHandling = Context.State.Retrieve <IHasErrorHandlers>(); _errorHandling.ErrorHandlers.Clear(); }
public static ContinuationExpression OnException <T>(this IHasErrorHandlers handlers) where T : Exception { return(new OnExceptionExpression <T>(handlers)); }