Junior — Middle
Hogyan történik a hibakezelés a CoroutineScope keretében Kotlinben?
sobes.tech MI
Válasz az MI-től
A Kotlinban a CoroutineScope hibakezelése kivételmechanizmusok és speciális hibakezelők segítségével történik.
Fő módszerek:
- try-catch a coroutine belsejében A coroutine kódját try-catch blokkba lehet helyezni, hogy helyi szinten kezeljük a kivételeket.
launch {
try {
// kód, ami kivételt dobhat
} catch (e: Exception) {
// hibakezelés
}
}
- CoroutineExceptionHandler Ez egy speciális kezelő, amit a coroutine kontextusába lehet helyezni, hogy globálisan kezelje a launch által indított (de nem async) coroutine-okban kezeletlen kivételeket.
val handler = CoroutineExceptionHandler { _, exception ->
println("Elkapva $exception")
}
val scope = CoroutineScope(Dispatchers.Main + handler)
scope.launch {
throw RuntimeException("Hiba")
}
- Hibakezelés az async-ben Az async esetén a kivételek nem azonnal dobódnak, hanem a await() hívásakor, így ott kell kezelni őket.
val deferred = async {
throw RuntimeException("Hiba")
}
try {
deferred.await()
} catch (e: Exception) {
// kezelés
}
Így a módszer kiválasztása a coroutine típusától és a kívánt hibakezelési szinttől függ.