DEV Community

Sivalokesh
Sivalokesh

Posted on

Simplifying RESTful API Error Handling in Spring Boot with @ControllerAdvice

Hi everyone,

I wanted to share a quick tip for handling errors in a more structured way in Spring Boot applications using @ControllerAdvice and @ExceptionHandler.

Problem: In a typical Spring Boot REST API, we may have multiple exceptions thrown across different controllers. Manually handling them can lead to duplicated code and inconsistent responses.

Solution: @ControllerAdvice provides a global error handling mechanism, allowing you to centralize exception handling logic. Here's an example:

`@ControllerAdvice
public class GlobalExceptionHandler {

@ExceptionHandler(ResourceNotFoundException.class)
public ResponseEntity<ErrorResponse> handleResourceNotFoundException(ResourceNotFoundException ex) {
    ErrorResponse errorResponse = new ErrorResponse("RESOURCE_NOT_FOUND", ex.getMessage());
    return new ResponseEntity<>(errorResponse, HttpStatus.NOT_FOUND);
}

@ExceptionHandler(Exception.class)
public ResponseEntity<ErrorResponse> handleGenericException(Exception ex) {
    ErrorResponse errorResponse = new ErrorResponse("INTERNAL_SERVER_ERROR", "An unexpected error occurred");
    return new ResponseEntity<>(errorResponse, HttpStatus.INTERNAL_SERVER_ERROR);
}
Enter fullscreen mode Exit fullscreen mode

}

ErrorResponse Class:

public class ErrorResponse {
private String code;
private String message;

public ErrorResponse(String code, String message) {
    this.code = code;
    this.message = message;
}

// Getters and Setters
Enter fullscreen mode Exit fullscreen mode

}`

Key Takeaway: By using @ControllerAdvice, we can centralize error handling, making the code cleaner, more maintainable, and ensuring consistent error responses across the application.

I’d love to know if anyone has other tips for simplifying error handling or improving best practices in Spring Boot!

Cheers!

Top comments (0)