假设我在java中有ErrFoo
和ErrBar
两个不同的错误类。在RetryPolicy
收到回复后我必须处理它们吗?但是类型信息会在此级别中被删除。我无法直接在此图层中获取错误信息。
我已经提出了提取器解决方案,但非常难看。这样,我需要在上面两层ConcreteClient
的所有RPC调用方法中添加一个相同的提取函数,因为在该层中存在所有类型的信息。这非常难看。我想知道有什么方法可以创建一个界面或者其他什么方式来解决我的需求?
public class AbstractClient {
protected <ReqT, ResT> void callAsyncWithRetry(MethodDescriptor<ReqT, ResT> method,
ReqT request,
StreamObserver<ResT> responseObserver) {}
}
public class ConcreteClient extends AbstractClient {
// real call issue from here.
}
public class RetryPolicy {
public <T> T callWithRetry(Callable<T> proc, String methodName) {
//error need to be handled here.
}
}