Junior — Middle
Hogyan történik a hibakezelés a korutinokon belül aszinkron alkalmazásokban?
sobes.tech MI
Válasz az MI-től
Kotlinban a korutinokban a hibakezelés a szokásos kivételmechanizmusok, például try-catch segítségével történik. Ha a korutin belsejében kivétel fordul elő, azt try-catch blokkban lehet elkapni, hogy megakadályozzuk az alkalmazás összeomlását vagy a hiba kezelését.
Ezenkívül a korutinok támogatnak egy speciális kontextust, a CoroutineExceptionHandler-t, amely lehetővé teszi a nem kezelt kivételek globális kezelését a launch által indított korutinokban.
Példa a hiba kezelésére egy korutin belsejében:
import kotlinx.coroutines.*
fun main() = runBlocking {
val handler = CoroutineExceptionHandler { _, exception ->
println("Elkapott kivétel: ${exception.message}")
}
val job = launch(handler) {
try {
// Kód, ami kivételt dobhat
throw IllegalArgumentException("Hiba a korutinban")
} catch (e: Exception) {
println("Hiba kezelése a korutinban: ${e.message}")
}
}
job.join()
}
Fontos megjegyezni, hogy az async által indított korutinokban a kivételek nem azonnal dobódnak, hanem a await() hívásáig késleltetve vannak, ahol el lehet őket kapni.