private void doFilter(HttpServletRequest request, HttpServletResponse response, FilterChain chain)
     throws IOException, ServletException {
   ErrorWrapperResponse wrapped = new ErrorWrapperResponse(response);
   try {
     chain.doFilter(request, wrapped);
     int status = wrapped.getStatus();
     if (status >= 400) {
       handleErrorStatus(request, response, status, wrapped.getMessage());
     }
   } catch (Throwable ex) {
     handleException(request, response, wrapped, ex);
   }
 }