Sobes.tech
Junior — Middle

Como implementar o tratamento de exceções em corrotinas assíncronas?

sobes.tech IA

Resposta da IA

No Kotlin, para lidar com exceções em corrotinas, pode usar blocos try-catch dentro da própria corrotina ou aplicar construções especiais, como o CoroutineExceptionHandler.

Exemplo com try-catch dentro da corrotina:

launch {
    try {
        val result = someSuspendFunction()
        println(result)
    } catch (e: Exception) {
        println("Erro: ${e.message}")
    }
}

Se a corrotina for iniciada através do launch, exceções não tratadas são passadas para o CoroutineExceptionHandler:

val handler = CoroutineExceptionHandler { _, exception ->
    println("Exceção tratada: ${exception.message}")
}

GlobalScope.launch(handler) {
    throw RuntimeException("Erro na corrotina")
}

Dessa forma, é possível gerenciar erros de forma flexível no código assíncrono.