最后又一些不对。
1. CoroutineExceptionHandler只能捕获launch中的异常。
这个是全局异常捕获,if用async启动的,await()处没有try catch,CoroutineExceptionHandler会收到。
2. launch产生的异常会立即传递给父级 ,这个不一定。比如:
@Test
fun `test_CoroutineExceptionHandler_01`() = runBlocking<Unit> {
val exceptionHandler =
CoroutineExceptionHandler { context, throwable ->
Log.e(
TAG,
"parent throwable:$throwable"
)
}
val scope = CoroutineScope(Job())
scope.launch(exceptionHandler) {
Log.e(TAG, "parent execute start")
val childExHandler =
CoroutineExceptionHandler { context, throwable ->
Log.e(
TAG,
"child throwable:$throwable"
)
}
//子协程中如果使用SupervisorJob()、Job(),则异常不会往上传播;否则异常会在顶层协程中处理
val childJob = launch(Job()+childExHandler) {
// val childJob = launch(childExHandler) {
delay(1000)
Log.e(TAG, "child execute")
throw IllegalArgumentException("error occur")
}
childJob.join()
Log.e(TAG, "parent execute end")
}
Thread.sleep(2000)
}
Kotlin协程的理解关于Kotlin协程的文章特别多,多数是按照官方教程翻译一遍,很多概念理解起来比较困惑,特别是协程的异常处理部分,看的是一头雾水。所以打算跟着官方文档及优秀的Kotlin协程...
最近看到一个新闻,一个 1: 1 的自由高达落户在上海金桥。 作为高达爱好者的我一直想去现场感受一下高达真实的压迫感,无奈一直没机会去上海。不过这难不倒我,借助 AR 技术自...
FBO Frame Buffer object 为什么要用FBO 我们需要对纹理进行多次渲染采样时,而这些渲染采样是不需要展示给用户看的,所以我们就可以用一个单独的缓冲对象(...
原文地址 Android MediaCodec stuff 这篇文章是关于 MediaCodec 这一系列类,它主要是用来编码和解码音视频数据。并且包含了一些源码示例的集合以...
前言 当前众多的视频SDK中, 大都是封装ffmpeg对视频进行转码, 压缩, 裁剪的处理.优点是ffmpeg发展到现在已经相对成熟, 支持的视频格式较多.但是缺点也是显而易...
【声 明】 首先,这一系列文章均基于自己的理解和实践,可能有不对的地方,欢迎大家指正。其次,这是一个入门系列,涉及的知识也仅限于够用,深入的知识网上也有许许多多的博文供大家学...
最近在做Android opengl相关的项目, 碰到一个问题, 如何根据用户的手势判断是否点击了某个3d 物体,如果是原生应用, 这个根本就不是问题, 因为Android ...
@风起于山巅 更,最近工作有点忙
Android音视频【十三】OpenSL ES介绍&基于OpenSL ES实现音频采集人间观察勿再别人的心中修行自己,勿再自己的心中强求别人。 前言 最近写文章有点偷懒了,离上次写文章大概一个月了。 一般Android音频的采集在java层使用AudioRec...