예제 #1
0
        public void Ctor_CorrectlySets_AllProperties()
        {
            var exception = new Exception();
            var context   = new ClientExceptionContext(_createContext, exception);

            Assert.Same(exception, context.Exception);
            Assert.False(context.ExceptionHandled);
        }
예제 #2
0
        public void OnClientException(ClientExceptionContext filterContext)
        {
            Assert.NotNull(filterContext);

            _results.Add(_name);

            if (_handlesException)
            {
                filterContext.ExceptionHandled = true;
            }
        }
예제 #3
0
        public virtual void Run(CreateContext context)
        {
            var filterInfo = GetFilters(context.Job.MethodData);

            try
            {
                CreateWithFilters(context, filterInfo.ClientFilters);
            }
            catch (Exception ex)
            {
                var exceptionContext = new ClientExceptionContext(context, ex);

                InvokeExceptionFilters(exceptionContext, filterInfo.ClientExceptionFilters);
                if (!exceptionContext.ExceptionHandled)
                {
                    throw;
                }
            }
        }
예제 #4
0
 private static void InvokeExceptionFilters(
     ClientExceptionContext context, IEnumerable<IClientExceptionFilter> filters)
 {
     foreach (var filter in filters.Reverse())
     {
         filter.OnClientException(context);
     }
 }