Como saber quais exceções tratar na minha api spring

2 respostas
exceptionapijavaspringspring-boot
R

Estou estudando APIs com spring. Na parte de fazer as handle exceptions me veio uma dúvida. Quais exceções devo tratar, até agora(e é o que eu encontro na maioria dos materiais) eu só tratei a “ResourceNotFoundException” e fiz uma “AllException”. Mas quais devo tratar, como saber qual a classe certa pra isso? Alguém tem uma dica?

@ControllerAdvice
public class GlobalExceptionHandler extends ResponseEntityExceptionHandler {

    @ExceptionHandler(Exception.class)
    public ResponseEntity<ExceptionResponse> handleAllException(Exception ex, WebRequest request) {
        ExceptionResponse response = new ExceptionResponse(LocalDateTime.now(),
                HttpStatus.BAD_REQUEST,
                "Error unknown",
                request.getDescription(false));
        response.getErrors().add(ex.getMessage());
        return new ResponseEntity<>(response, response.getStatus());
    }

    @ExceptionHandler(ResourceNotFoundException.class)
    public ResponseEntity<ExceptionResponse> handleNotFoundException(ResourceNotFoundException ex, WebRequest request) {
        ExceptionResponse response = new ExceptionResponse(LocalDateTime.now(),
                HttpStatus.NOT_FOUND,
                "Resource not found!",
                request.getDescription(false));
        response.getErrors().add(ex.getMessage());
        return new ResponseEntity<>(response, response.getStatus());
    }
}

2 Respostas

Z

Trate todas que são úteis para sua aplicação. Vejo que você já está tratando exceções de Not Found (quando um recurso não é encontrado) e Bad Request (quando o corpo da requisição não condiz com o esperado). Você pode tratar exceções Unauthorized, Forbidden, Internal Error, enfim, tudo que for útil pro seu caso.

R

Eu não sei o que são “Unauthorized, Forbidden, Internal Error” e quais são as classes que elas lançam, onde estudar isso?

Criado 22 de abril de 2023
Ultima resposta 23 de abr. de 2023
Respostas 2
Participantes 2