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 повторяются.

Другие вопросы по тегам