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.