Kotlin 协程异常,聚合异常 多个异常的处理

Posted 安果移不动

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kotlin 协程异常,聚合异常 多个异常的处理相关的知识,希望对你有一定的参考价值。

    @Test
    fun `test exception aggregation`() = runBlocking<Unit> 
        val coroutineExceptionHandler = CoroutineExceptionHandler  _, exception ->
            println("Caught $exception $exception.suppressed.contentToString()")
        
        val job = GlobalScope.launch(coroutineExceptionHandler) 
            launch 
                try 
                    delay(Long.MAX_VALUE)
                 finally 
                    throw ArithmeticException()
                
            
            launch 
                try 
                    delay(Long.MAX_VALUE)
                 finally 
                    throw IndexOutOfBoundsException()
                
            
            launch 
                delay(100)
                throw IOException()
            
        
        job.join()
    

 

以上是关于Kotlin 协程异常,聚合异常 多个异常的处理的主要内容,如果未能解决你的问题,请参考以下文章

Kotlin 协程协程异常处理 ⑤ ( 异常传播的特殊情况 | 取消子协程示例 | 子协程抛出异常后父协程处理异常时机示例 | 异常聚合 | 多个子协程抛出的异常会聚合到第一个异常中 )

Kotlin 协程协程异常处理 ③ ( 协程异常处理器 CoroutineExceptionHandler 捕获异常 | 验证 CoroutineScope 协程的异常捕捉示例 )

Kotlin 协程协程异常处理 ③ ( 协程异常处理器 CoroutineExceptionHandler 捕获异常 | 验证 CoroutineScope 协程的异常捕捉示例 )

Kotlin 协程协程异常处理 ② ( SupervisorJob 协程 | supervisorScope 协程作用域构建器函数 )

Kotlin 协程协程异常处理 ② ( SupervisorJob 协程 | supervisorScope 协程作用域构建器函数 )

Kotlin 协程协程异常处理 ① ( 根协程异常处理 | 自动传播异常 | 在协程体捕获异常 | 向用户暴露异常 | 在 await 处捕获异常 | 非根协程异常处理 | 异常传播特性 )