SimpleRetryPolicy: Что означает логическое значение на карте Throwable?
Конструктор для SimpleRetryPolicy
позволяет указать, какие исключения повторяются. Большой!
Однако этот вход является картой, где ключом является класс Throwable, а значением является логическое значение. Нет никакой документации о том, для чего используется это логическое значение - кто-нибудь здесь знает?
По сути, он заполняет экземпляр SubclassClassifier
чья документация слишком сложна для моего простого ума, чтобы понять:
Классификатор для параметризованного типа объекта на основе карты. Классифицирует объекты в соответствии с их отношением наследования с предоставленной картой типов. Если подлежащий классификации объект является одним из ключей предоставленной карты или подклассом одного из ключей, то возвращается значение записи карты для этого ключа. В противном случае возвращает значение по умолчанию, которое по умолчанию равно нулю.
1 ответ
Увидеть SimpleRetryPolicy.retryForException()
:
/**
* Delegates to an exception classifier.
*
* @param ex
* @return true if this exception or its ancestors have been registered as
* retryable.
*/
private boolean retryForException(Throwable ex) {
return retryableClassifier.classify(ex);
}
то есть, если бросаемый объект классифицирован (находится на карте), возвращается логическое значение этой записи карты.
Это позволяет вам настроить набор исключений, в которых вы явно заявляете, что не хотите повторять какое-то исключение.
Рассмотрим исключение Bar
продолжается Foo
(а также Bar
скажем, есть братья и сестры Baz
, Qux
).
Если вы добавите Foo:true
на карту и Bar:false
затем Foo
и все его подклассы, кроме Bar
повторяются.