Comment la gestion des exceptions est-elle effectuée à l'intérieur des coroutines dans votre expérience?
sobes.tech IA
Réponse de l'IA
La gestion des exceptions dans les coroutines sur Android se fait généralement à l’aide de blocs try-catch à l’intérieur de la coroutine elle-même ou à l’aide de mécanismes spéciaux tels que CoroutineExceptionHandler.
Si une exception survient à l’intérieur d’une coroutine, elle peut être capturée comme suit :
launch {
try {
// code pouvant lancer une exception
} catch (e: Exception) {
// gestion de l’exception
}
}
Pour une gestion globale des exceptions non capturées, on peut utiliser CoroutineExceptionHandler :
val handler = CoroutineExceptionHandler { _, exception ->
println("Attrapé $exception")
}
GlobalScope.launch(handler) {
throw RuntimeException("Erreur")
}
Il est important de se rappeler que les exceptions dans les coroutines lancées via launch sont transmises au gestionnaire, tandis que dans celles lancées via async, l’exception sera levée lors de l’appel à await().
Par conséquent, lors de l’utilisation de async, il faut envelopper l’appel à await() dans un try-catch pour gérer les erreurs.