Sobes.tech
Junior — Middle

Como a conclusão de uma coroutine filha afetará o escopo pai em operações assíncronas?

sobes.tech IA

Resposta da IA

No Kotlin Coroutines, a coroutine filha herda o contexto da coroutine pai, incluindo o seu scope. Se a coroutine filha termina com um erro, por padrão, esse erro propaga-se para cima e cancela o scope do pai juntamente com todas as suas coroutines filhas. Isto garante uma concorrência estruturada e previne fugas de recursos.

Se a coroutine filha termina com sucesso, isso não afeta de forma alguma o scope do pai — ele continua a funcionar.

Exemplo:

val parentJob = CoroutineScope(Dispatchers.Default).launch {
    val child = launch {
        throw Exception("Erro na coroutine filha")
    }
    child.join()
}

// parentJob também será cancelado devido ao erro em child

Para evitar o cancelamento do pai em caso de erros nas coroutines filhas, pode-se usar SupervisorJob, que isola os erros das coroutines filhas.