Junior — Middle
Как се осъществява обработката на изключения вътре в корутините във вашия опит?
sobes.tech AI
Отговор от AI
Обработката на изключения в корутините в Android обикновено се извършва чрез блокове try-catch вътре в самата корутина или чрез специални механизми като CoroutineExceptionHandler.
Ако възникне изключение вътре в корутината, то може да бъде уловено по следния начин:
launch {
try {
// код, който може да предизвика изключение
} catch (e: Exception) {
// обработка на изключението
}
}
За глобална обработка на неуловени изключения може да се използва CoroutineExceptionHandler:
val handler = CoroutineExceptionHandler { _, exception ->
println("Хванато $exception")
}
GlobalScope.launch(handler) {
throw RuntimeException("Грешка")
}
Важно е да се помни, че изключенията в корутините, стартирани чрез launch, се предават към обработчика, а в корутините, стартирани чрез async, изключението ще бъде хвърлено при извикване на await().
Затова при използване на async трябва да обградите извикването на await() с try-catch, за да се обработят грешките.