Kotlin全局捕捉协程异常方法详解
作者:安果移不动 发布时间:2022-10-09 23:27:03
标签:Kotlin,协程,异常
单个异常捕捉
val handler = CoroutineExceptionHandler { coroutineContext, throwable ->
Log.d(TAG, "onCreate: handler${throwable}")
}
Log.d(TAG, "onCreate:1")
findViewById<Button>(R.id.button).also {
it.setOnClickListener {
GlobalScope.launch(handler) {
Log.d(TAG, "onCreate: onClick")
"anc".substring(10)
}
}
}
launch里面如果不写handler
可以使用这样的方式来创建全局异常捕获处理
在main目录下
新建 resources\META-INF\services\kotlinx.coroutines.CoroutineExceptionHandler
注意没有后缀哦
然后回到java类里面 随便找个位置创建class类
内容
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
写到刚才创建的没有后缀的文件当中去
程序里删除 hander
findViewById<Button>(R.id.button).also {
it.setOnClickListener {
GlobalScope.launch {
Log.d(TAG, "onCreate: onClick")
"anc".substring(10)
}
}
}
点击按钮后程序会闪退
但是
异常可以拿到。这就很好了
来源:https://blog.csdn.net/mp624183768/article/details/126458290


猜你喜欢
- Android Studio 打包 jar 及 aar 包创建工程 New -> Module -> Library在gradl
- Java 中的线程有以下状态:新建状态(New):新创建的线程,还未执行。就绪状态(Runnable):执行了 start() 方法,等待运
- 前言LocalDateTime、LocalDate、LocalTime 是 Java8 全新的日期框架,加强了对时间的管理,有很多特别好用的
- 一:什么是classpath?classpath指的就是 *.java文件,资源文件等编译后存放的位置,对于maven项目就是指 targe
- 对于使用文件进行交换数据的应用来说,使用FTP 服务器是一个很不错的解决方案。关于FileZilla Server服务器的详细搭建配置过程,
- IDEA 2020 源生是不支持中文的,感谢捷克工程师(可能是由国人实现)对我大天朝程序员的“照顾”,且不说这个必要性到底有多大,但从侧面体
- 本文实例讲述了C#中实现子类调用父类的方法,分享给大家供大家参考之用。具体方法如下:一、通过子类无参构造函数创建子类实例创建父类Person
- 背景客户使用我们系统的时候,查询不带任何查询条件,查询就返回全部数据,500多万条数据啊,然后直接导出,数据量庞大,接口超时,这可苦了我们这
- 对于网站的安全性,是每个网站开发者和运营者最关心的问题。网站一旦出现漏洞,那势必将造成很大的损失。为了提高网站的安全性,首先网站要防注入,最
- 本文实例为大家分享了java实现按层遍历二叉树,按层遍历二叉树可以通过队列来实现。其主要思路如下:1、先将根节点放入队列中2、每次都从队列中
- 1 请求映射 在SpringBoot中使用@XxxMapping注解完成前端请求与后端方法的一个映射。以前的时候,通常使用url映射命名的
- 前言本文详细介绍如何使用spring-boot2.x快速整合log4j2日志框架。spring-boot2.x使用logback作为默认日志
- 场景我们团队现在面临着多端数据接口对接的问题,为了解决这个问题我们定义了接口对接的规范,前端(安卓,Ios,web前端)和后端进行了数据的格
- 首先,将json串转为一个JObject对象:JObject jo = (JObject)JsonConvert.DeserializeOb
- 这篇文章主要介绍了java内存泄漏与内存溢出关系解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友
- java:使用匿名类直接new接口java中的匿名类有一个倍儿神奇的用法,见下面代码示例:package contract;public i
- eclipse 创建 user library 方法1、Window - Preferences - Java - Build Path -
- 本文实例讲述了C#分布式事务的超时处理的方法。分享给大家供大家参考。具体分析如下:事务是个很精妙的存在,我们在数据层、服务层、业务逻辑层等多
- 我们知道,进入百度图片后,输入一个关键字后,首先看到的是很多缩略图,当我们点击某张缩略图时,我们就可以进入到大图显示页面,在大图显示页面,中
- 本文实例讲述了Java Lambda表达式与匿名内部类的联系和区别。分享给大家供大家参考,具体如下:一 点睛Lambda表达式与匿名内部类存