Alex Rivera | Logout

Spring 3 - Create ExceptionHandler for NoSuchRequestHandlingMethodException

Asked 2010-07-12T16:43:30.523
28

Using Spring 3, I like to create an exception handler using the ExceptionHandler annotation that will handle "no page found (404)" requests. I am using the following code to do this. But when I point to a URL that does not exist, the default exception handler defined by Spring is being invoked.

It might be that I'm handling the NoSuchRequestHandlingMethodException exception. If it is, then what exception should I be registering?

Will you please take a look at the following code and see what I'm doing wrong?

NOTE: If I change the exception in the @ExceptionHandler to NullPointerException and create a RequestMapping to throw null pointer, that will work.

    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.ExceptionHandler;
    import org.springframework.web.bind.annotation.RequestMapping;

    import org.springframework.web.servlet.mvc.multiaction.NoSuchRequestHandlingMethodException;

    import org.apache.commons.logging.Log;
    import org.apache.commons.logging.LogFactory;
    import org.springframework.web.servlet.ModelAndView;

    @Controller
    public class GeneralHandler {
      private final Log logger = LogFactory.getLog(getClass());

      @ExceptionHandler(NoSuchRequestHandlingMethodException.class)
      public ModelAndView handleException (NoSuchRequestHandlingMethodException ex) {
        ModelAndView mav = new ModelAndView();
        logger.error("Exception found: " + ex);
        return mav;
      }
    }
Edit
Report

1 Answer

2

You could go with this approach, it is great idea and works, necessity to throw exceptions only withing particular Handler makes @ExceptionHandler not so useful as it looks.

answered 2010-11-23T01:13:33.570

Your Answer