Junior — Middle
Kā tiek veikta kļūdu apstrāde Kotlin CoroutineScope ietvaros?
sobes.tech AI
Atbilde no AI
Kotlin-ā CoroutineScope iekšienē kļūdu apstrāde tiek veikta, izmantojot izņēmumu mehānismus un īpašus kļūdu apstrādātājus.
Galvenie veidi:
- try-catch korutīnā Korutīnas kodu var ietvert try-catch blokā, lai lokāli apstrādātu izņēmumus.
launch {
try {
// kods, kas var izraisīt izņēmumu
} catch (e: Exception) {
// kļūdas apstrāde
}
}
- CoroutineExceptionHandler Tas ir īpašs apstrādātājs, ko var nodot korutīnas kontekstā, lai globāli apstrādātu neapstrādātas izņēmumu korutīnās, kas tiek palaistas ar launch (bet ne ar async).
val handler = CoroutineExceptionHandler { _, exception ->
println("Noķerts $exception")
}
val scope = CoroutineScope(Dispatchers.Main + handler)
scope.launch {
throw RuntimeException("Kļūda")
}
- Kļūdu apstrāde async Async gadījumā, izņēmumi netiek uzreiz izsviesti, bet tikai, kad tiek izsaukts await(), tāpēc kļūdu apstrāde ir jāveic tur.
val deferred = async {
throw RuntimeException("Kļūda")
}
try {
deferred.await()
} catch (e: Exception) {
// apstrāde
}
Tādējādi, metodes izvēle ir atkarīga no korutīnas veida un vēlamā kļūdu apstrādes līmeņa.