Skip to main content

Handling Exceptions and Returning User-Friendly Messages in Spring Boot

In a Spring Boot application, it's crucial to handle exceptions gracefully and provide user-friendly error messages when something goes wrong. One way to achieve this is by using a controller advice, which allows you to intercept and handle exceptions globally for all controllers. In this blog post, we'll explore how to write a controller advice in Spring Boot that catches all exceptions and returns user-friendly messages.

Setting up the Controller Advice

First, let's create a new class annotated with @ControllerAdvice and implement the ResponseEntityExceptionHandler class. This class will handle exceptions globally for all controllers in our Spring Boot application.

import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler;

@ControllerAdvice
public class GlobalExceptionHandler extends ResponseEntityExceptionHandler {

}

Handling Exceptions

Next, we need to define exception handling methods within the GlobalExceptionHandler class. We'll annotate these methods with @ExceptionHandler and specify the exception types we want to handle.

@ExceptionHandler(Exception.class)
public ResponseEntity<Object> handleException(Exception ex) {
   // Handle general exceptions here
   // Create a custom error response object
   ErrorResponse errorResponse = new ErrorResponse(HttpStatus.INTERNAL_SERVER_ERROR, "An error occurred");
   return new ResponseEntity<>(errorResponse, HttpStatus.INTERNAL_SERVER_ERROR);
}

@ExceptionHandler(YourCustomException.class)
public ResponseEntity<Object> handleCustomException(YourCustomException ex) {
   // Handle specific exceptions here
   // Create a custom error response object
   ErrorResponse errorResponse = new ErrorResponse(HttpStatus.BAD_REQUEST, ex.getMessage());
   return new ResponseEntity<>(errorResponse, HttpStatus.BAD_REQUEST);
}

With this setup, any uncaught exceptions in your Spring Boot REST controllers will be intercepted by the GlobalExceptionHandler class. The exception handling methods can then create custom error response objects with user-friendly messages and appropriate HTTP status codes to return to the client.

Comments

Popular posts from this blog

Configuring Multiple Profiles in a Single YAML File for Spring Boot Application

Spring Boot provides a convenient way to configure application properties using YAML files. In a typical scenario, you might have different configurations for different environments such as development, testing, and production. Instead of maintaining multiple YAML files for each profile, you can configure multiple profiles within a single YAML file. This approach simplifies the configuration management process. Let's see how to achieve this. Step 1: Create a YAML Configuration File First, create a YAML file (e.g., application.yml ) in your Spring Boot project's resource directory. This file will contain the configuration properties for all the profiles you want to define. spring: profiles: active: dev logging: level: root: INFO com.example: DEBUG # Configuration for the 'dev' profile --- spring: profiles: dev database: url: jdbc:mysql://localhost:3306/devdb username: devuser password: devpassword # Co...

How to Open a Project in IntelliJ IDEA from the Command Line: A Step-by-Step Guide

How to Open a Project in IntelliJ IDEA from the Command Line IntelliJ IDEA is a popular and powerful Integrated Development Environment (IDE) for Java development. You may have a project folder that you want to open in IntelliJ IDEA. In this tutorial, we will walk through the steps for opening a project in IntelliJ IDEA from the command line. Configure IntelliJ IDEA for Command Line Use Before we can open a project in IntelliJ IDEA from the command line, we need to make sure that it is properly configured. Here are the steps: Open IntelliJ IDEA and go to Tools > Create Command-line Launcher . Select the installation path and click OK . Make sure that the launcher is added to your system PATH variable. You can do this by opening a terminal or command prompt and typing: which idea If the output is the path to the IntelliJ IDEA launcher, then you're good to go! Open a Project in IntelliJ IDEA from the Command Line Open your terminal or command prompt. ...

A End to End ant Build xml snippet

A End to End ant Build xml snippet you could use for reference <?xml version="1.0" encoding="UTF-8"?> <project name="End to End Build" default="sendmail" basedir=".">     <target name="init">         <tstamp />         <property file="build.properties" />             <path id="classpath">             <pathelement path="${servlet.jar}" />             <pathelement path="${junit.jar}" />         </path>