У меня есть ExceptionMapper
как Provider
для обработки всех моих исключений.
, так что очевидно, что мой класс реализует ExceptionMapper<Throwable>
, и мы, как известно, все исключения как-то расширены Throwable
.
теперь я использовал jax-rs @NotNull
, чтобы проверить, что входные значения моих ресурсов не равны NULL, и при некотором поиске я понял, что будет выброшено ConstraintViolationException
, когда аннотированное поле будет нулевым.
поэтому я попытался обработать это и добавить некоторые детали к ответу (добавить некоторую пользовательскую модель json) в моем ExceptionMapper, например:
@Provider
public class AllExceptionMapper implements ExceptionMapper<Throwable> {
private final Logger logger = LogManager.getLogger(AllExceptionMapper.class);
@Override
public Response toResponse(Throwable ex) {
Response response;
CustomError error;
// handle some errors
else if (ex instanceof ConstraintViolationException) {
error = new CustomError(
324, // predefined error type in our documents
"some details"
);
response = Response.status(Response.Status.BAD_REQUEST).entity(error).build();
}
// handle some other errors
return response;
}
}
проблема в , это не сработало , но если бы я создал другого поставщика картографирования исключений, который реализует ExceptionMapper<ConstraintViolationException>
и обработал бы его там, он работал бы без проблем.
как я уже говорил (и также проверял), все исключения как-то расширены из класса Throwable
, так что я пропускаю и почему он не работает?
......
не работал, я имею в виду, что он игнорирует мой маппер (тот, который реализуется с ExceptionMapper<Throwable>
) и имел нормальное поведение, которое возвращает код состояния 400 без полезной нагрузки ответа, как будто вообще нет маппера