Exception Handling in Spring: Using ControllerAdvice Annotation and ResponseBodyAdvice

Manpreet Singh
5 min readMar 31, 2023

In a Spring application, exceptions can occur at various levels, such as service, repository, or controller. Handling exceptions appropriately is crucial for providing a better user experience and improving the overall reliability of the application.

Spring provides two ways to handle exceptions: at the controller level and with the @ControllerAdvice annotation.

Handling Exceptions at the Controller Level

To handle exceptions at the controller level, we can use the @ExceptionHandler annotation. The @ExceptionHandler annotation is used to define a method that handles a specific type of exception thrown by a controller method. This method should be defined within the same controller class and annotated with the @ExceptionHandler annotation.

Here’s an example:

@RestController
public class MyController {

@GetMapping("/hello")
public String hello() {
throw new RuntimeException("Oops! Something went wrong");
}

@ExceptionHandler(RuntimeException.class)
public ResponseEntity<String> handleRuntimeException(RuntimeException ex) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("An error occurred: " + ex.getMessage());
}
}

In the above example, we have defined a controller class called MyController with a method called hello that throws a RuntimeException

--

--

Manpreet Singh
Manpreet Singh

Written by Manpreet Singh

Software developer who loves writing about programming, technology, passive income strategies etc.

No responses yet