Sobes.tech
Junior — Middle

Kā jūsu pieredzē notiek izņēmumu apstrāde korutīnās?

sobes.tech AI

Atbilde no AI

Android korutīnu kļūdu apstrāde parasti tiek veikta, izmantojot try-catch blokus pašā korutīnā vai ar īpašiem mehānismiem, piemēram, CoroutineExceptionHandler.

Ja korutīnā rodas izņēmums, to var noķert šādi:

launch {
    try {
        // kods, kas var izraisīt izņēmumu
    } catch (e: Exception) {
        // izņēmuma apstrāde
    }
}

Lai globāli apstrādātu neapstrādātas izņēmumus, var izmantot CoroutineExceptionHandler:

val handler = CoroutineExceptionHandler { _, exception ->
    println("Noķerts $exception")
}

GlobalScope.launch(handler) {
    throw RuntimeException("Kļūda")
}

Svarīgi atcerēties, ka izņēmumi launch uzsāktajās korutīnās tiek nodoti apstrādātājam, bet async uzsāktajās korutīnās izņēmums tiks izsaukts, izsaucot await().

Tādēļ, izmantojot async, ir jāiekļauj await() izsaukums try-catch, lai apstrādātu kļūdas.