У меня есть два GET POST API REST
Когда в методе создается какое-либо исключение, обработчик исключений работает нормально. Но если я использую неправильно сформированный REST api uri, то он показывает только 400 Bad Request, не переходя в обработчик исключений.
Например.
Если я нажимаю http://localhost:8080/mypojoInteger/abc,, он не может разобрать строку вЦелое число и, следовательно, я ожидаю, что это пойдет в ExceptionHandler. Он не переходит к обработчику исключений, вместо этого я вижу только 400 ошибочных запросов.
Он отлично работает и переходит к обработчику исключений, когда любое исключение выдается внутри метода GET / POST.
Например,: Он отлично работает и переходит в обработчик исключений, если я использую 123 в переменной пути http://localhost:8085/mypojoInteger/123
и меняю метод getData на
@GetMapping("/mypojoInteger/{sentNumber}")
public void getData(@PathVariable("sentNumber") Integer sentNumber) {
throw new NumberFormatException("Exception");
}
ПРИМЕЧАНИЕ. Та же проблема возникает и с запросом POST.
- GET:
@GetMapping("/mypojoInteger/{sentNumber}")
public void getData(@PathVariable("sentNumber") Integer sentNumber) {
//some code
}
POST:
public void postData(@RequestBody MyPojo myPojo) {
//some code
}
Класс Controller Advice:
@ControllerAdvice
public class CustomGlobalExceptionHandler extends ResponseEntityExceptionHandler {
@ExceptionHandler(NumberFormatException.class)
protected ResponseEntity<Object> handleEntityNotFound(
NumberFormatException ex) {
// some logic
}
}
Как я могу обработать Исключение, когда оно не может связать String с Integer в самом REST API uri ??
РЕДАКТИРОВАТЬ: мое требование заключается в том, что я должен обрабатывать переполнение целочисленного значения, т. Е. Если передача больше, чем максимальное значение целого числа, он должен обрабатывать его, а не генерировать трассировку стека NumberFormatException.
Например: когдая передаю значение потока
POJO:
public class MyPojo extends Exception {
private String name;
private Integer myInt;
//getters/setter
}
{
"name":"name",
"myInt":12378977977987879
}
Без @ControllerAdvice он просто показывает NumberFormatException StackTrace. С @ControllerAdvice это просто показывает 400 неправильных запросов без объекта ответа. Я не хочу этот неправильный запрос stacktrace / 400 по умолчанию в этом случае, но я хочу показать свое пользовательское сообщение.