Kotlin全局捕捉协程异常方法详解
作者:安果移不动 时间:2022-10-09 23:27:03
单个异常捕捉
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
标签:Kotlin,协程,异常
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
C#调用JS的几种方法
2022-09-29 23:24:18
Spring整合SpringMVC与Mybatis(SSM)实现完整登录功能流程详解
2022-07-15 10:19:25
![](https://img.aspxhome.com/file/2023/2/80842_0s.gif)
Java8中的 Lambda表达式教程
2023-10-13 01:32:29
Android实现界面左右滑动切换功能
2022-08-30 02:00:58
![](https://img.aspxhome.com/file/2023/5/96745_0s.gif)
解决Mybatis 大数据量的批量insert问题
2023-09-08 13:59:40
![](https://img.aspxhome.com/file/2023/0/88080_0s.jpg)
java判断各类型字符个数实例代码
2022-01-22 16:39:15
Android支付宝支付封装代码
2023-08-02 15:10:06
小程序与后端Java接 口交互实现HelloWorld入门
2023-11-04 18:55:31
![](https://img.aspxhome.com/file/2023/4/58864_0s.jpg)
Java实现超市会员管理系统
2021-10-01 08:39:28
![](https://img.aspxhome.com/file/2023/9/106129_0s.jpg)
mybatis QueryWrapper的条件构造之apply、last、select解析
2022-02-12 17:32:51
如何通过JVM角度谈谈Java的clone操作
2023-10-13 09:54:40
![](https://img.aspxhome.com/file/2023/1/85881_0s.png)
基于Java Socket实现一个简易在线聊天功能(一)
2023-09-23 17:18:35
Java拷贝数组方法Arrays.copyOf()是地址传递的证明实例
2023-11-08 11:51:29
![](https://img.aspxhome.com/file/2023/5/58215_0s.png)
C#正则表达式匹配与替换字符串功能示例
2022-12-11 19:44:55
maven打包时候修改包名称带上git版本号和打包时间方式
2022-03-09 20:51:39
![](https://img.aspxhome.com/file/2023/4/67684_0s.png)
如何利用IDEA搭建SpringBoot项目整合mybatis实现简单的登录功能
2022-01-15 06:14:59
![](https://img.aspxhome.com/file/2023/9/61849_0s.png)
一文带你探究Spring中Bean的线程安全性问题
2023-10-03 10:52:13
c# 实现康威生命游戏(细胞自动机)的示例
2022-01-08 04:36:22
Spring Security OAuth2 实现登录互踢的示例代码
2023-09-04 19:09:28
![](https://img.aspxhome.com/file/2023/7/58307_0s.jpg)
Unity游戏之存储数据
2022-06-06 20:58:28
![](https://img.aspxhome.com/file/2023/6/108686_0s.jpg)