code: public synchronized ActionForward handleException( Throwable ex, ActionMapping mapping,
                                                         ActionForm form, HttpServletRequest request,
                                                         HttpServletResponse response )
          throws IOException, ServletException
      {
          PerRequestState prevState = setPerRequestState( new PerRequestState( request, response, mapping ) );
  
          try
          {
              ExceptionsHandler eh = Handlers.get( getServletContext() ).getExceptionsHandler();
              FlowControllerHandlerContext context = getHandlerContext();
  
              // First, put the exception into the request (or other applicable context).
              Throwable unwrapped = eh.unwrapException( context, ex );
              eh.exposeException( context, unwrapped, mapping );
              return eh.handleException( context, unwrapped, mapping, form );
          }
          finally
          {
              setPerRequestState( prevState );
          }
      }
docs: Handle the given exception - invoke user code if appropriate and return a destination URI.
  
  @param ex the Exception to handle.
  @param mapping the Struts action mapping for current Struts action being processed.
  @param form the form-bean (if any) associated with the Struts action being processed.  May be null.
  @param request the current HttpServletRequest.
  @param response the current HttpServletResponse.
  @return a Struts ActionForward object that specifies the URI that should be displayed.
  @throws ServletException if another Exception is thrown during handling of <code>ex</code>.