protected void recordFilterError(I inMesg, ZuulFilter<I, O> filter, Throwable t) {
        // Add a log statement for this exception.
        String errorMsg = "Filter Exception: filter=" + filter.filterName() + ", request-info="
                + inMesg.getInfoForLogging() + ", msg=" + String.valueOf(t.getMessage());
        if (t instanceof ZuulException && !((ZuulException) t).shouldLogAsError()) {
            logger.warn(errorMsg);
        } else {
            logger.error(errorMsg, t);
        }

        // Store this filter error for possible future use. But we still continue with next filter in the chain.
        SessionContext zuulCtx = inMesg.getContext();
        zuulCtx.getFilterErrors()
                .add(new FilterError(filter.filterName(), filter.filterType().toString(), t));
        if (zuulCtx.debugRouting()) {
            Debug.addRoutingDebug(
                    zuulCtx,
                    "Running Filter failed " + filter.filterName() + " type:" + filter.filterType() + " order:"
                            + filter.filterOrder() + " " + t.getMessage());
        }
    }
This is typically set by a filter when wanting to reject a request and also reduce load on the server by
 not processing anymore filterChain
zuul-core/src/main/java/com/netflix/zuul/netty/filter/BaseZuulFilterRunner.java