Basta gerar a Exception no Service:
return getReadOnlyRepository().findById(id).orElseThrow(() -> new EntityNotFoundException(id.toString()));
E tratar no Controller com o uso de @ControllerAdvice
@ControllerAdvice(annotations = RestController.class)
public class RestExceptionHandler {
@ExceptionHandler(EntityNotFoundException.class)
public ResponseEntity<ErrorResponse> handleEntityNotFound(final EntityNotFoundException exception) {
final ErrorResponse errorResponse = new ErrorResponse();
errorResponse.setHttpStatus(exception.getStatus().value());
errorResponse.setException(exception.getClass().getSimpleName());
errorResponse.setMessage(exception.getMessage());
return new ResponseEntity<>(errorResponse, exception.getStatus());
}
OBS: Mais detalhes no commit, pois precisa que seja criado uma classe para detalhes do erro, outra para ficar capturando o erro e as próprias Exceptions criadas;
O Spring Boot fornece algumas propriedades com as quais podemos adicionar a mensagem de exceção, classe de exceção ou até mesmo um rastreamento de pilha como parte da carga de resposta :
Basta gerar a Exception no Service:
return getReadOnlyRepository().findById(id).orElseThrow(() -> new EntityNotFoundException(id.toString()));
E tratar no Controller com o uso de @ControllerAdvice
OBS: Mais detalhes no commit, pois precisa que seja criado uma classe para detalhes do erro, outra para ficar capturando o erro e as próprias Exceptions criadas;
O Spring Boot fornece algumas propriedades com as quais podemos adicionar a mensagem de exceção, classe de exceção ou até mesmo um rastreamento de pilha como parte da carga de resposta :
A propriedade include-stacktrace = on_trace_param significa que se incluído o parâmetro na URL ( ?trace=true), será retornado o stacktrace, conforme:
Referência:https://reflectoring.io/spring-boot-exception-handling/
Referência:https://www.toptal.com/java/spring-boot-rest-api-error-handling
Referência:https://zetcode.com/springboot/controlleradvice/