1 問題
app里面的網絡請求是通過協程+okhttp來實現的,但是沒有做網絡異常處理(域名無法解析、502錯誤等等一系列),導致程序奔潰
2 嘗試
因為app基本上做好了,外面有大幾十個地方調用,然后又有不同的作用域,調用的地方太多了,一開始修改在最外出的網絡請求地方直接加上try catch,發現捕獲不到異常
3 最終解決辦法
寫一個擴展函數,文件如下
const val TAG = "net error"suspend fun <T>call(job: suspend () -> T): ApiResponse<T> {return try {ApiResponse(job())} catch (e: java.lang.Exception) {ApiResponse(e)}
}suspend fun <T> Call<T>.subscribe(scope: CoroutineScope,customErrorHandle: (code: Int, e: String?) -> Unit = defaultError
): T? {return try {withContext( Dispatchers.IO) {val result = exec