Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

500 error handling in Spring MVC

I developed my project with hybris.And I want to some template in 500Error.jsp but I can't handle 500 error.Next I can't get jsp file.

I got this error:

SEVERE: Servlet.service() for servlet DispatcherServlet threw exception
java.lang.NullPointerException

Aug 10, 2017 3:14:07 PM org.apache.catalina.core.StandardHostValve custom
SEVERE: Exception Processing ErrorPage[exceptionType=java.lang.Throwable, location=/serverError]
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.NullPointerException

in web.xml file

<error-page>
        <exception-type>java.lang.Throwable</exception-type>
        <location>/serverError</location>
</error-page>

in Controller.java following method

@RequestMapping(value = "serverError", method = RequestMethod.GET)
    public String renderErrorPage(final Model model, HttpServletRequest httpRequest) throws CMSItemNotFoundException {
like image 536
java.nazif Avatar asked Aug 10 '17 12:08

java.nazif


2 Answers

You need to use a @ControllerAdvice like the example below:

@ControllerAdvice
public class ControllerExceptionHandler {

  private static Logger log = LoggerFactory.getLogger(ControllerExceptionHandler.class);

  @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
  @ExceptionHandler(Exception.class)
  public void notFoundHandler() {
    log.debug("Item not found. HTTP 500 returned.");
  }

}
like image 73
José Mendes Avatar answered Oct 09 '22 23:10

José Mendes


Can you put a breakpoint in your error controller and it stops as expected? If not, you can try to make a exception handler and then forward message to your controller.

@ExceptionHandler(Exception.class)
public String handleException(final Exception e) {

    return "forward:/serverError";
}
like image 31
staszko032 Avatar answered Oct 10 '22 00:10

staszko032