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 ?
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 ?
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!