4
respostas

Tratamento de erro padrão para quando um registro não existe no banco de dados

Olá,

Pesquisei e encontrei alguns tópicos sobre o assunto, mas não achei as respostas satisfatórias.

Na prática se faz realmente o tratamento caso a caso para quando o registro não existe no banco de dados (por exemplo no endpoint de exclusão, alteração ou obter detalhes) ou é melhor ter um handler padrão para isso?

Não me parece muito produtivo ficar fazendo isto caso a caso, como também não me parece performático fazer sempre uma consulta antes de excluir um registro, por isso estou insistindo na dúvida.

Muito obrigado.

4 respostas

No caso de um endpoint que trabalha com um front end bem acoplado, vai ser difícil vir uma solicitação de delete que não exista, porém, você pode sim fazer uma validação e retornar algo usando um status de 204, por exemplo.

https://developer.mozilla.org/pt-BR/docs/Web/HTTP/Status/204

as validações, infelizmente, sempre vão existir.

Olá Rodrigo,

Muito obrigado pela resposta. Concordo com você e a minha dúvida é por justamente ser um caso de exceção, se não seria mais produtivo escrever um handler padrão ao invés de escrever uma condição em cada método do controle.

Segue um exemplo de um handler bem básico que fiz para esta situação (entidade não encontrada no banco):

@RestControllerAdvice
public class EntityNotFoundHandler {

    @ResponseStatus(code = HttpStatus.NOT_FOUND)
    @ExceptionHandler(EntityNotFoundException.class)
    public ResponseEntity<Object> handle(final EntityNotFoundException exception) {
        return ResponseEntity.notFound().build();
    }

}

Abraço

Sim, perfeito. Muito mais limpo!

Olá Rodrigo,

Muito obrigado pelo feedback.

Tudo de bom.