@ExceptionHandler

Definição

A anotação @ExceptionHandler é responsável por captar toda vez que uma exceção (definido no argumento dela) for lança, e tratá-la por meio do método com essa anotação.

Vantagens

  • Maior segurança (não expõem os dados de stacktrace do erro para o cliente)

  • Facilitar a trativa de erro para o consumidor da API

Sintaxe

@ExceptionHandler([exceção tratada por esse método])
// Método
  • É uma boa prática utilizar o seguinte padrão de nomenclatura: handle[nome da exceção]

  • Em projeto que utilização o padrão arquitetural REST, é recomendável utilizar a wrapper class ResponseEntity

Exemplo

@ExceptionHandler(EntityNotFoundException.class)
public ResponseEntity<ErrorMessage> handleEntityNotFoundException(EntityNotFoundException exception) {
  HttpStatus status = HttpStatus.NOT_FOUND;
  ErrorMessage errorMessage = new ErrorMessage();
 
  errorMessage.setStatus(status.value());
  errorMessage.setTime(LocaDateTime.now());
  errorMessage.setMessage("Entidade não encontrada.")
 
  return ResponseEntity
            .status(status)
            .body(exception);
}