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, за да се обработят грешките.