public void Run(PerformContext context, IJobPerformStrategy strategy) { var filterInfo = GetFilters(context.MethodData); try { PerformJobWithFilters(context, strategy, filterInfo.ServerFilters); } catch (Exception ex) { var exceptionContext = new ServerExceptionContext(context, ex); InvokeServerExceptionFilters(exceptionContext, filterInfo.ServerExceptionFilters); if (!exceptionContext.ExceptionHandled) { throw; } } }
private static void InvokeServerExceptionFilters( ServerExceptionContext context, IEnumerable<IServerExceptionFilter> filters) { foreach (var filter in filters.Reverse()) { filter.OnServerException(context); } }