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.