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