Ответ 1
Документация, безусловно, несовместима. Понятно, что ResponseProcessingException
предполагается выбросить, когда не удалось выполнить ClientResponseFilter
.
Реализация, на которую я смотрю (RESTEasy 3.0.16), делает следующее:
try {
filter.filter(requestContext, responseContext);
} catch (ResponseProcessingException e) {
throw e;
} catch (Throwable e) {
throw new ResponseProcessingException(response, e);
}
Нет причин, чтобы метод get
не объявлял исключение, если методы put
и post
. Внутри они все обрабатываются одним и тем же кодом.
Мое заключение заключается в том, что небольшая разница в документации между этими методами - это просто недосмотр.
Интересно, что в моей копии исходного кода метод get()
имеет эту строку в своем javadoc:
/**
* @throws javax.ws.rs.ProcessingException
* in case the invocation processing has failed.
В то время как все другие подобные методы (например, get(Class<T>)
) документируются следующим образом:
/**
* @throws ProcessingException in case the request processing or subsequent I/O operation fails.
Что бросается в глаза - это полное имя класса в первом. Просто догадка, но это заставляет меня думать, что это было введено в другое время или другим человеком. Может быть, я переусердствую. Я попытался просмотреть историю изменений, но все, что я нашел, было одним фиксатором, говорящим "переместить исходный код в свой собственный репозиторий" ). Так много для этого.
Однако, как вы указали, это не ошибка, так как ResponseProcessingException
есть и подкласс ProcessingException
и даже не является проверенным исключением.