1
resposta

[Dúvida] tratamento de erro

fiquei um pouco confuso, na api está sendo retornado o erro 500 porem criamos uma classe para tratar o erro 404, qual a relação entre os dois erros ? e o que esta acontecendo por trás com essas anotações ?

1 resposta

Oi Lucas!

Entendo a sua confusão, e vou tentar esclarecer a relação entre os erros 500 e 404, além de explicar o que acontece por trás com as anotações do Spring.

O erro 500 é um erro genérico do servidor, que indica que algo inesperado aconteceu durante o processamento da requisição. No contexto do Spring Boot, isso geralmente ocorre quando uma exceção não tratada é lançada. Por exemplo, se você tenta acessar um recurso no banco de dados que não existe e não há um tratamento específico para essa situação, o Spring lançará uma exceção que resultará em um erro 500.

Já o erro 404 significa "Not Found" e é mais específico. Ele indica que o recurso solicitado não foi encontrado no servidor. No seu caso, quando você tenta acessar um médico por um ID que não existe, o ideal é retornar um erro 404, pois o recurso (médico) não foi encontrado.

Para lidar com isso, você criou uma classe de tratamento de erros com a anotação @RestControllerAdvice, que permite capturar exceções específicas, como a EntityNotFoundException, e retornar um erro 404 em vez do 500 padrão. O método tratarErro404() dentro dessa classe é anotado com @ExceptionHandler(EntityNotFoundException.class), o que informa ao Spring que, quando essa exceção ocorrer, ele deve executar esse método e retornar a resposta configurada, que no seu caso é um ResponseEntity.notFound().build().

Isso ajuda a manter o código do seu controller mais limpo, sem a necessidade de colocar blocos try-catch em todos os lugares onde essa exceção pode ocorrer.

Espero ter ajudado e bons estudos!