Junior — Middle
Come viene gestito il trattamento degli errori all'interno di CoroutineScope in Kotlin?
sobes.tech AI
Risposta dell'AI
La gestione degli errori in CoroutineScope in Kotlin avviene tramite meccanismi di eccezioni e gestori di errori speciali.
Principali metodi:
- try-catch all'interno della coroutine È possibile avvolgere il codice della coroutine in un blocco try-catch per gestire localmente le eccezioni.
launch {
try {
// codice che può generare un'eccezione
} catch (e: Exception) {
// gestione dell'errore
}
}
- CoroutineExceptionHandler È un gestore speciale che può essere passato nel contesto della coroutine per gestire globalmente le eccezioni non catturate nelle coroutine lanciate con launch (ma non con async).
val handler = CoroutineExceptionHandler { _, exception ->
println("Catturato $exception")
}
val scope = CoroutineScope(Dispatchers.Main + handler)
scope.launch {
throw RuntimeException("Errore")
}
- Gestione degli errori in async Nel caso di async, le eccezioni non vengono lanciate immediatamente, ma quando si chiama await(), quindi la gestione degli errori deve avvenire lì.
val deferred = async {
throw RuntimeException("Errore")
}
try {
deferred.await()
} catch (e: Exception) {
// gestione
}
Pertanto, la scelta del metodo dipende dal tipo di coroutine e dal livello di gestione degli errori desiderato.