Junior — Middle
Quelles approches et méthodes sont utilisées pour gérer les erreurs dans les coroutines Kotlin?
sobes.tech IA
Réponse de l'IA
En Kotlin, il existe plusieurs approches pour gérer les erreurs dans les coroutines :
- try-catch à l'intérieur de la coroutine — la méthode la plus simple pour gérer les exceptions. Vous pouvez envelopper le code dans
launchouasyncdans un bloctry-catch.
launch {
try {
// code pouvant lancer une exception
} catch (e: Exception) {
// gestion de l'erreur
}
}
- CoroutineExceptionHandler — un gestionnaire spécial que l'on peut passer dans le contexte de la coroutine. Il attrape les exceptions non gérées dans les coroutines lancées via
launch.
val handler = CoroutineExceptionHandler { _, exception ->
println("Attrapé $exception")
}
GlobalScope.launch(handler) {
throw RuntimeException("Erreur")
}
- Gestion des erreurs dans async/await — lors de l'utilisation de
async, les exceptions ne sont pas lancées immédiatement, mais lors de l'appel àawait(). Il faut donc envelopperawait()dans untry-catch.
val deferred = async {
// code
throw Exception("Erreur")
}
try {
deferred.await()
} catch (e: Exception) {
// gestion
}
- SupervisorJob et SupervisorScope — permettent d'isoler les erreurs des coroutines enfants, afin qu'une erreur ne fasse pas annuler tout le scope parent.
Ainsi, le choix de la méthode dépend du contexte et du type de coroutine (launch ou async).