Junior — Middle
Quais abordagens e métodos são utilizados para lidar com erros em corrotinas Kotlin?
sobes.tech IA
Resposta da IA
Em Kotlin, existem várias abordagens para lidar com erros em corrotinas:
- try-catch dentro da corrotina — a forma mais simples de lidar com exceções. Pode envolver o código dentro de
launchouasyncnum blocotry-catch.
launch {
try {
// código que pode lançar uma exceção
} catch (e: Exception) {
// tratamento do erro
}
}
- CoroutineExceptionHandler — um manipulador especial que pode ser passado no contexto da corrotina. Ele captura exceções não tratadas em corrotinas lançadas via
launch.
val handler = CoroutineExceptionHandler { _, exception ->
println("Capturado $exception")
}
GlobalScope.launch(handler) {
throw RuntimeException("Erro")
}
- Tratamento de erros em async/await — ao usar
async, as exceções não são lançadas imediatamente, mas quando se chamaawait(). Portanto, deve-se envolverawait()em umtry-catch.
val deferred = async {
// código
throw Exception("Erro")
}
try {
deferred.await()
} catch (e: Exception) {
// tratamento
}
- SupervisorJob e SupervisorScope — permitem isolar erros de corrotinas filhas, de modo que um erro não cancele todo o escopo pai.
Assim, a escolha do método depende do contexto e do tipo de corrotina (launch ou async).