Ниже мой класс ExceptionHandler в весенней загрузке
@RestControllerAdvice
public class CustomResponseEntityExceptionHandler extends ResponseEntityExceptionHandler {
@ExceptionHandler({InvalidRequestException.class, PropertyReferenceException.class})
public final ResponseEntity<ExceptionDetails> handleInvalidRequestException(InvalidRequestException ex, WebRequest request) {
ExceptionDetails details = new ExceptionDetails(ex.getMessage(),request.getDescription(false), new Date());
return new ResponseEntity<ExceptionDetails>(details, HttpStatus.BAD_REQUEST);
}
}
Ниже приведен код моего класса обслуживания.
@Override
public Page<Segment> listSegment(int pageNum, int size, String sortBy, String direction, String app) {
log.info("Starting to query the segment list");
Pageable pageable = createPageRequest(size, pageNum, sortBy, direction);
Pageable pageable = new PageRequest(page, size, dir, sortBy);
Page<Segment> resultPage = segmentRepository.findByApp(app,pageable);
if(pageNum > resultPage.getTotalPages() || resultPage.getContent().isEmpty()) {
log.info("No segment present");
throw new ResourceNotFoundException("No Segment Present");
}
log.info("Total segment successfully fetched is: "+resultPage.getContent().size());
if(resultPage.hasNext())
return new Page<>(resultPage.getContent(), true);
else
return new Page<>(resultPage.getContent());
}
В sortBy
если я передаю недопустимое имя столбца, это выдает PropertyReferenceException
, который не попадает в мой ExceptionHandler как код, представленный выше, и я не знаю почему.
Но если я поймаю это исключение, используя блок try-catch в моем слое Service, и добавлю свой пользовательский InvalidRequestException
, то это попадет в обработчик исключений.
Может кто-нибудь, пожалуйста, дайте мне знатьпричина и как я могу поймать PropertyReferenceException
в моем ExceptionHandler