OkHttp回调消除异常 - 设计缺陷或常见做法

时间:2015-08-25 18:35:07

标签: java android exception-handling okhttp

OkHttp库Callback接口声明为

public interface Callback {
  void onFailure(Request request, IOException e);
  void onResponse(Response response) throws IOException;
}

我最近在Callback failure for cancelled call in OkHttp

中发现的Call课程会使onResponse方法的未处理异常被吃掉

我对该设计的问题很少。

首先,为了强制捕获onResponse中的异常而不是抛弃它们,最好不要使用onResponse方法的不同声明,因为它们会被吃掉。

这个设计是否存在于OkHttp Callback接口中的缺陷,还是Java中的这种代码常见做法?

其次,当http请求到达onResponse回调方法时,我希望应该禁止在此时取消请求。我会说这是一个错误。我是对的吗?

1 个答案:

答案 0 :(得分:0)

我也在努力解决这个问题,现在我已经解决了以下问题:

new

关键是在OnResponse中调用OnFailure。我无法以任何其他方式访问Exception(虽然可能还有其他方法;这在我看来为OnFailure提供了一些额外的用处,并且我认为它很好地表达了意图)。请注意,可以出于其他原因调用OnFailure:https://square.github.io/okhttp/2.x/okhttp/com/squareup/okhttp/Callback.html