Na aula vimos o uso de ExceptionHandler mas gostaria de entender melhor qual seria a principal diferença ou vantagem de usar o ExceptionHandler nos métodos ao invés de usar Exceptions.
Na aula vimos o uso de ExceptionHandler mas gostaria de entender melhor qual seria a principal diferença ou vantagem de usar o ExceptionHandler nos métodos ao invés de usar Exceptions.
Olá, Camila. Tudo bem?
A diferença principal entre usar ExceptionHandler
e tratar exceções diretamente com try-catch
nos métodos está na centralização e reutilização do tratamento de erros.
Quando você usa try-catch
diretamente nos métodos, você está lidando com as exceções de forma local, ou seja, cada método precisa ter seu próprio bloco de tratamento de erro. Isso pode levar a uma duplicação de código, especialmente se você tiver várias partes do seu aplicativo que podem lançar o mesmo tipo de exceção.
Por outro lado, o uso de @ExceptionHandler
em uma classe anotada com @RestControllerAdvice
permite que você centralize o tratamento de exceções. Isso significa que você pode definir em um único lugar como lidar com uma exceção específica, e essa lógica será aplicada automaticamente em todos os lugares do seu aplicativo onde essa exceção for lançada. Isso não só reduz a duplicação de código, mas também torna o código mais limpo e fácil de manter.
Por exemplo, no seu caso, ao usar @ExceptionHandler(EntityNotFoundException.class)
na classe TratadorDeErros
, você está dizendo ao Spring para capturar essa exceção em qualquer lugar do seu projeto e aplicar o tratamento definido no método tratarErro404()
, que retorna um ResponseEntity
com status 404 Not Found
. Isso é particularmente útil para exceções que podem ocorrer em várias partes do aplicativo, como a EntityNotFoundException
.
Espero ter ajudado e bons estudos.