首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UnknownHostException和ConnectionException被重整公司解雇

UnknownHostException和ConnectionException被重整公司解雇
EN

Stack Overflow用户
提问于 2017-05-23 22:13:48
回答 1查看 1.4K关注 0票数 2

在我的安卓应用程序中,我正在使用RxJava适配器设置的Retrofit。问题是,我得到的一些报告显示,在某些设备中,Retrofit正在触发ConnectionException,而在其他一些设备中,则是在触发UnknownHostException。这使得使用rx.Observables方法插入其他onErrorResume()非常困难。更糟糕的是,两个异常共享的唯一公共父级是IOException,它非常通用。有办法把这个统一起来吗?

我只是在处理UnknownHostException的案子。但是现在我也有了这个ConnectionException,谁知道其他设备中还有哪个例外。

我可以将这两个异常映射到一个通用的自定义异常,类似于NoInternetConnectionException。但是,还有更多的例外吗?

更新:

目前,我的Interactors/UseCases所做的事情如下:

代码语言:javascript
复制
mNetworkUserRepository.getUserList()
    .onErrorResule(ObservableUtils.whenExceptionIs(RetrofitError.class), mUserDatabase.getUserList()) //Server side error
    .onErrorResule(ObservableUtils.whenExceptionIs(UnknownHostException.class), mUserDatabase.getUserList()) //No internet
    .onErrorResule(ObservableUtils.whenExceptionIs(ConnectionException.class), mUserDatabase.getUserList()) //ANOTHER EXCEPTION FOR THE SAME THING
    .subscribe(new MySubscriber<List<Users>>() {
        @Override
        public void onNext(List<Users> response) {
            callback.showOnUI(response);
        }
    });

因此,基本上在三星S7中,UnkownHostException正在被发射,在另一个设备Nexus中,ConnectionException正在被发射。我不喜欢这样,还有多少其他“没有互联网”的例外呢?我认为,只有当我试图在没有互联网连接的情况下提出http请求时,Retrofit才会解雇UnknownHostException。我怎么能把这个分类呢?我不想为不同的设备附加N个onResumeErrors

EN

回答 1

Stack Overflow用户

发布于 2017-05-25 08:43:21

您实际上无法从一个异常中知道是否没有internet,或者在此过程中发生了一些其他网络错误,正如您所遇到的,还有许多其他的情况和异常,比如SocketTimeoutExceptionUnknowHostException或来自IOException的任何其他与网络相关的Exception (您可以看到来自IOException的数十个派生类),它可能与没有internet相关,也可能与没有internet相关,因为网络操作可能会在许多不同来源的阶段失败,特别是在移动网络上。

因此,我认为,如果你真的需要‘没有互联网’的行为,你应该在请求之前检查它,并采取不同的行动之前。

当您执行一个调用时,我认为有两种失败需要考虑,IOException对于任何网络错误都是在途中发生的。(只需重试/使用缓存,不管您的情况如何),以及更新错误(HttpException),这意味着您从服务器获得响应(没有网络错误),但是请求本身有问题(在那里,您可能有很多错误的原因--身份验证错误(令牌)、授权等等)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44145888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档