Skip to content
This repository has been archived by the owner on Jan 12, 2022. It is now read-only.

Latest commit

 

History

History
67 lines (52 loc) · 1.9 KB

exception-handler-annotation.md

File metadata and controls

67 lines (52 loc) · 1.9 KB

@ExceptionHandler

Para que serve?

  • Indica para o Spring que toda vez que uma determinada exceção for lança, o método com essa anotação será invocada para tratá-la.

Como usar?

  • Defina qual exceção será tratada por esse método

    @ExceptionHandler(MinhaExcecao.class)
    // Método
  • OBS: é boa prática criar uma classe para informar mais detalhes sobre a exceção

  • Defina como retorno a classe com mais detalhes: ResponseEntity (SEMPRE)

  • Passe como parâmetro a exceção que será trada por ele

    @ExceptionHandler(MinhaExcecao.class)
    public ResponseEntity<MinhaExcecaoDetalhes> handleMinhaExcecao(MinhaExcecao exception) {
      // Código
    }
  • Instancie a classe MinhaExcecaoDetalhes com:

    • Construtor
      @ExceptionHandler(MinhaExcecao.class)
      public ResponseEntity<MinhaExcecaoDetalhes> handleMinhaExcecao(MinhaExcecao exception) {
        MinhaExcecao exception = new MinhaExcecao(...atributos...);
      }
    • Builder (Lombok)
      @ExceptionHandler(MinhaExcecao.class)
      public ResponseEntity<MinhaExcecaoDetalhes> handleMinhaExcecao(MinhaExcecao exception) {
        MinhaExcecao exception = MinhaExcecao
            .builder()
            ...
            atributos
            ...
            .build()
      }
  • Por fim, retorno o objeto na corpo da resposta

      @ExceptionHandler(MinhaExcecao.class)
      public ResponseEntity<MinhaExcecaoDetalhes> handleMinhaExcecao(MinhaExcecao exception) {
        MinhaExcecao exception = new MinhaExcecao(...atributos...);
        
        return ResponseEntity
                  .status(CcdigoHttp)
                  .body(exception);
      }
      

O que ganho com isso?

  • Mais segurança na API.
  • Facilita a vida de quem for usar a API.

Tutoriais