docs: public void handleException(ServletRequest request, ServletResponse response, Throwable cause) throws IOException, ServletException
  	{
  		List messageStack = new ArrayList();
  		messageStack.add("Request: " + request);
  		messageStack.add("Remote address: " + request.getRemoteAddr());
  		messageStack.add("Remote host: " + request.getRemoteHost());
  
  		//unwrap exception
  		while(/*cause instanceof ServletException && */cause.getCause() != null)
  		{
  			messageStack.add("Exception with message: " + cause.getMessage());
  			messageStack.add(cause.getStackTrace()[0].toString());
  
  			cause = cause.getCause();
  		}
  		//all servlets are responsible for handling all possible situations
  		//so an exception handled here is a critical one
  		if(cause instanceof ServletRequestAlreadyRedirectedException)
  		{
  			return;
  		}
  
   		//print error to screen
  		if(this.printUnhandledExceptions)
  		{
  			if(!response.isCommitted())
  			{
  				System.out.println(new LogEntry(Level.CRITICAL, "exception handled in http-filter " + filterName, cause));
  				ServletSupport.printException(response, "An exception occurred for which no exception page is defined.\n" +
  						"Make sure you do so if your application is in a production environment.\n" +
  						"(in section [" + exceptionPagesSectionId + "])" +
  						"\n\n" + CollectionSupport.format(messageStack, "\n"), cause);
  			}
  			else
  			{
  				System.out.println(new LogEntry(Level.CRITICAL, "exception handled in http-filter " + filterName + " can not be printed: response already committed", cause));
  			}
  		}
  	}