1

I'm trying to add an exception handler for ResponseStatusException in my Spring 3 project.

@ControllerAdvice
public class ErrorHandler extends ResponseEntityExceptionHandler {

    @Autowired
    private ObjectMapper objectMapper;

    @ExceptionHandler({ResponseStatusException.class})
    public ResponseEntity<Object> handle(ResponseStatusException e) {
        ObjectNode node = objectMapper.createObjectNode()
                .put("code", e.getStatusCode().value())
                .put("details", e.getMessage());

        return ResponseEntity.status(e.getStatusCode().value())
                .contentType(MediaType.APPLICATION_JSON)
                .body(node);
    }
}

But, the handler doesn't get called when I throw an exception like this:

throw new ResponseStatusException(HttpStatus.BAD_REQUEST, "No id has been provided!");

This approach works for other custom exceptions I have. But, it doesnt seem to trigger when using ResponseStatusException. I'm not sure why.

Here is my pom.xml

<dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>6.0.11</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>3.1.0</version>
            <exclusions>
                <exclusion>
                    <groupId>org.yaml</groupId>
                    <artifactId>snakeyaml</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-webflux</artifactId>
            <version>3.1.0</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
            <version>3.1.0</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
            <version>3.1.0</version>
        </dependency>
Reid2
  • 41
  • 4

0 Answers0