记Okhttp的拦截器导致app崩溃问题
原文: 记Okhttp的拦截器导致app崩溃问题 - Stars-One的杂货小窝
app对接的后台接口,传参需要加密,获取数据需要解密,于是使用了拦截器去实现,然后发现以下问题:
即使在发起请求的那行代码已经有try catch,但是接口响应数据体为空仍然会导致导致app崩溃
实际上,就是后台接口没有返回数据导致的崩溃闪退出现(当然,有可能是我APP接口传参问题或者后台调整了)
原因
崩溃信息见下图:
搜索网络上的资料,发现这是Okhttp的设计思想的问题,因为国外的开发者考虑如果响应数据体为空,那么就是直接抛出异常结束应用
而国内一般喜欢容错处理和提示用户
处理方法
那么如何解决呢?
首先,我们知道为什么会崩溃?
因为okhttp拦截器如果抛出非IO异常,则会导致app崩溃,设计如此
基于上面,我们可以在拦截器里加上一个try catch,并将异常转为IO异常,之后异常就会成功地抛出到我们外层的try catch,就不会崩溃了