记Okhttp的拦截器导致app崩溃问题

发布时间 2023-08-30 22:26:21作者: Stars-one

原文: 记Okhttp的拦截器导致app崩溃问题 - Stars-One的杂货小窝

app对接的后台接口,传参需要加密,获取数据需要解密,于是使用了拦截器去实现,然后发现以下问题:

即使在发起请求的那行代码已经有try catch,但是接口响应数据体为空仍然会导致导致app崩溃

实际上,就是后台接口没有返回数据导致的崩溃闪退出现(当然,有可能是我APP接口传参问题或者后台调整了)

原因

崩溃信息见下图:

搜索网络上的资料,发现这是Okhttp的设计思想的问题,因为国外的开发者考虑如果响应数据体为空,那么就是直接抛出异常结束应用

而国内一般喜欢容错处理和提示用户

处理方法

那么如何解决呢?

首先,我们知道为什么会崩溃?

因为okhttp拦截器如果抛出非IO异常,则会导致app崩溃,设计如此

基于上面,我们可以在拦截器里加上一个try catch,并将异常转为IO异常,之后异常就会成功地抛出到我们外层的try catch,就不会崩溃了

参考