3

的构造函数SimpleRetryPolicy允许您指定哪些异常是可重试的。伟大的!

但是,此输入是一个映射,其中键是 Throwable 的类,值是布尔值。没有任何文档说明这个布尔值的用途——这里有人知道吗?

本质上,它填充了一个实例,它SubclassClassifier的文档对于我的简单头脑来说太难理解了:

基于地图的参数化对象类型的分类器。根据对象与提供的类型映射的继承关系对对象进行分类。如果要分类的对象是所提供映射的键之一,或者是其中一个键的子类,则返回该键的映射条目值。否则返回默认值,默认为空。

4

1 回答 1

4

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);
}

即,如果 throwable 已分类(在地图中),则返回该地图条目的布尔值。

这允许您设置一组异常,您可以在其中明确声明您不想重试某些异常。

考虑异常Bar扩展Foo(并且Bar有一些同级类,比如Baz, Qux)。

如果您添加Foo:true到地图,Bar:false然后Foo以及它的所有子类,除了Bar是可重试的。

于 2016-05-02T18:20:08.903 回答