Open bennyhuo opened 5 years ago
大佬,请问我用retrofit做网络请求,用的您文章末尾提供的库,为啥在okhttp的拦截器里抛异常,不能在调用await方法的地方捕获呢,抛个异常直接导致app崩溃了。
@XuQK 大佬,请问我用retrofit做网络请求,用的您文章末尾提供的库,为啥在okhttp的拦截器里抛异常,不能在调用await方法的地方捕获呢,抛个异常直接导致app崩溃了。
先确定这个异常是否会在 CallBack 的回调中回调,如果不能,那么 await 肯定是无法捕获的,因为这个异常没有传出来。具体问题还要具体分析
@enbandari
@XuQK 大佬,请问我用retrofit做网络请求,用的您文章末尾提供的库,为啥在okhttp的拦截器里抛异常,不能在调用await方法的地方捕获呢,抛个异常直接导致app崩溃了。
先确定这个异常是否会在 CallBack 的回调中回调,如果不能,那么 await 肯定是无法捕获的,因为这个异常没有传出来。具体问题还要具体分析
功力不够,追踪不了,先搁着吧,感谢大佬(っ.❛ ᴗ ❛.)っ
看到第二段的时候我就在想,为什么 Job
取消的时候 delay
会抛出 CancellationException
异常,如果我自己写挂起函数,怎么才能在 Job
取消的时候释放资源,就去看了一下 delay
如何实现的,正好把 suspendCancellableCoroutine
和 CancellableContinuation
的源码看了一下,第二天接着看的时候正好就看到第三节在讲这个了,后面看的就很顺利了,行云流水 💪
https://www.bennyhuo.com/2019/04/30/coroutine-cancellation/
协程的任务的取消需要靠协程内部调用的协作支持,这就类似于我们线程中断以及对中断状态的响应一样。