Android之网络请求通过协程+okhttp的没有做网络异常处理导致程序奔溃问题

1 问题

app里面的网络请求是通过协程+okhttp来实现的,但是没有做网络异常处理(域名无法解析、502错误等等一系列),导致程序奔溃
 

 

 

 

 

 

 

 

 

 

 

2 尝试

因为app基本上做好了,外面有大几十个地方调用,然后又有不同的作用域,调用的地方太多了,一开始修改在最外出的网络请求地方直接加上try catch,发现捕获不到异常

 

 

 

 

 

 

 

 

 

 

3 最终解决办法

写一个扩展函数,文件如下

const val TAG = "net error"

suspend fun call(job: suspend () -> T): ApiResponse {
    return try {
        ApiResponse(job())
    } catch (e: java.lang.Exception) {
        ApiResponse(e)
    }
}

suspend fun  Call.subscribe(
        scope: CoroutineScope,
        customErrorHandle: (code: Int, e: String?) -> Unit = defaultError
): T? {
    return try {
        withContext( Dispatchers.IO) {
            val result = exec

你可能感兴趣的:(Android,进阶,Android,网络请求协程,oktthp,网络请求没有做异常处理,奔溃)