Android之网络请求通过协程+okhttp的没有做网络异常处理导致程序奔溃问题
生活随笔
收集整理的這篇文章主要介紹了
Android之网络请求通过协程+okhttp的没有做网络异常处理导致程序奔溃问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
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總結
以上是生活随笔為你收集整理的Android之网络请求通过协程+okhttp的没有做网络异常处理导致程序奔溃问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android之简单的文件夹选择器实现
- 下一篇: Android之判断时间戳是不是今天