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

pom.xml

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
http://localhost:8080/SpringMVCControllerAdviceExample/helloworld/hello


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.
http://localhost:8080/SpringMVCControllerAdviceExample/helloworld/CustomException



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.
http://localhost:8080/SpringMVCControllerAdviceExample/helloworld/IOException


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

Was this post helpful?

Leave a Reply

Your email address will not be published. Required fields are marked *