Spring MVC Exceptional Handling using @ControllerAdvice example


In this post , we will see how to do exceptional handling in Spring MVC using @ControllerAdvice. In previous post, we have already seen how to use @ExceptionHandler to handle exceptions but @ExceptionHandler can be applied to one controller only but what if you want to handle exception globally i.e. across multiple controller. You can use @ControllerAdvice to handle exceptions globally.
Lets understand this with the help of example:

1) Create a dynamic web project using maven in eclipse named “SpringMVCControllerAdviceExample”

Maven dependencies

2) Our pom.xml will look like below


Spring application configuration:

3) Change web.xml as below:

4) create a xml file named springrest-servlet.xml in /WEB-INF/ folder.
Please change context:component-scan if you want to use different package for spring to search for controller.Please refer to spring mvc hello world example for more understanding.

Create Controller

6) Create a controller named “HelloWorldController.java” in package org.arpit.java2blog.controller

Create ControllerAdvice named GlobalExceptionController.java

As you can see, we have annotated two method i.e. catchCustomException and catchIOException with @ExceptionHandler. These methods will handle CustomException and IOException respectively and these exceptions can be thrown by multiple controllers too.

Create view

Modify index.jsp as below

Create Custom_Excepion.jsp in /WEB-INF/ folder to handle CustomException exception.

Create IOException.jsp in /WEB-INF folder as below to handle IOException.

7) It ‘s time to do maven build.

Right click on project -> Run as -> Maven build

Maven build in eclipse
8) Provide goals as clean install (given below) and click on run
Maven build in eclipse

Run the application

9) Right click on project -> run as -> run on server
Select apache tomcat and click on finish

10) Lets hit below URL

As you can see, it is working fine with above URL.
Now lets hit some URL which will throw exception and exception will be handled by @ExcpetionHandler in @ControllerAdvice class.

When you hit below URL.

As you can see, when you hit above URL , CustomException is thrown and handled by catchCustomException method in @ControllerAdvice class.

When you hit below URL.

As you can see, when you hit above URL , CustomException is thrown and handled by catchIOException method in @ControllerAdvice class.

Add Comment