Kotlin全局捕捉协程异常方法详解

单个异常捕捉

  val handler = CoroutineExceptionHandler { coroutineContext, throwable ->
            Log.d(TAG, "onCreate: handler${throwable}")
        }
        Log.d(TAG, "onCreate:1")
        findViewById

launch里面如果不写handler

可以使用这样的方式来创建全局异常捕获处理

在main目录下

新建 resources\META-INF\services\kotlinx.coroutines.CoroutineExceptionHandler

Kotlin全局捕捉协程异常方法详解_第1张图片

注意没有后缀哦

然后回到java类里面 随便找个位置创建class类

Kotlin全局捕捉协程异常方法详解_第2张图片

内容

package com.example.coroutine
import android.util.Log
import kotlinx.coroutines.CoroutineExceptionHandler
import kotlin.coroutines.CoroutineContext
class GlobalCoroutineExceptionHandler : CoroutineExceptionHandler {
    override val key = CoroutineExceptionHandler
    private  val TAG = "GlobalCortineExceptionH"
    override fun handleException(context: CoroutineContext, exception: Throwable) {
        Log.d(TAG, "handleException:${exception} ")
    }
}

根据包名和类目

package com.example.coroutine.

GlobalCoroutineExceptionHandler

我们可以确定这个文件的路径为

com.example.coroutine.GlobalCoroutineExceptionHandler

写到刚才创建的没有后缀的文件当中去

Kotlin全局捕捉协程异常方法详解_第3张图片

程序里删除 hander

      findViewById

点击按钮后程序会闪退

但是

异常可以拿到。这就很好了

到此这篇关于Kotlin全局捕捉协程异常方法详解的文章就介绍到这了,更多相关Kotlin协程异常内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

你可能感兴趣的:(Kotlin全局捕捉协程异常方法详解)