Olá Jonas, tudo bem?
Para retornar um status e mensagem de erro diferentes para cada tipo de exceção, é necessário tratar cada exceção individualmente na classe TratadorDeErros. Dessa forma, é possível personalizar a mensagem de erro de acordo com o tipo de exceção lançada.
No entanto, é possível criar um método geral para capturar todas as exceções não tratadas individualmente e retornar uma mensagem de erro genérica para o usuário. Você pode utilizar o @ControllerAdvice para criar uma classe que irá interceptar as exceções lançadas e tratar de forma genérica.
Segue um exemplo de como seria a implementação:
@ControllerAdvice
public class TratadorDeErros {
@ExceptionHandler(Exception.class)
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
@ResponseBody
public ErroDTO handleException(Exception ex) {
ErroDTO erro = new ErroDTO();
erro.setMensagem("Ocorreu um erro interno no servidor.");
return erro;
}
}
Nesse exemplo, a classe TratadorDeErros intercepta todas as exceções que não foram tratadas individualmente e retorna uma mensagem de erro genérica para o usuário. Você pode personalizar a mensagem de erro de acordo com a sua necessidade.
Espero ter ajudado e bons estudos!