Olá pessoal, peço humildemente a ajuda de vocês para tentar resolver um problema. Criei uma classe para manipular as exceções REST, algumas das exceções consegui fazer funcionar e quando ocorrem, a response volta da forma como espero, mas por algum motivo quando a requisição gera um erro 500 (Internal Server Error) não funciona, estou a dois dias trabalhando nisso e ainda não descobri onde eu errei!
Segue uma parte do código:
@ControllerAdvice
public class RestApiExceptionHandler extends ResponseEntityExceptionHandler {
@Autowired
private MessageSource messageSource;
// outros métodos...
@ExceptionHandler(value = {RuntimeException.class})
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
public ResponseEntity<Object> handleAllUncaughtException(RuntimeException ex, WebRequest request) {
ObjectApiException objApiException = new ObjectApiException();
objApiException.setStatus(HttpStatus.INTERNAL_SERVER_ERROR.value());
objApiException.setDataHora(UtilitariosDateTimeUnB.getDataHoraAtual());
objApiException.setMensagem("Erro interno do servidor");
objApiException.setDetalhes(Arrays.asList(
new ObjectApiExceptionDetail(
null,
this.messageSource.getMessage((MessageSourceResolvable) ex, LocaleContextHolder.getLocale()), // Mensagem de erro
ex.getCause().toString().split(": ")[0], // Classe
null
)
));
// "Logando" o erro no console.
LogManager.getLogger(ex.getCause().toString().split(": ")[0]).error(ex.getCause().toString().split(": ")[1]);
return ResponseEntity.internalServerError().body(objApiException);
}
}
Quando testo no Postman não me retorna nada:
E o console me mostra o log de erro tratado no Log4J 2:
2021-07-09 14:46:08 [http-nio-80-exec-4] ERROR: [No property dataInicio found for type Banco!] at br.unb.webservices.dadosfuncionais.db.mssql.services.BancoService.findByDenominacaoContainingIgnoreCase:152
Minha application.properties:
spring.application.name=@project.name@
spring.profiles.active=@activatedProperties@
spring.messages.basename=messages
spring.messages.encoding=UTF-8
spring.output.ansi.enabled=always
server.port=80
server.error.include-stacktrace=on-param
server.error.whitelabel.enabled=false
server.error.include-message=always
Se alguém conseguiu retornar o Response para esse erro, por favor, me auxiliem aqui!
Desde já agradeço.