Sobes.tech
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.