Sobes.tech
Назад к вопросам
Junior — Middle
76

Каким образом реализовать обработку исключений в асинхронных корутинах?

Компании, где спрашивали
Dion

Ответ от нейросети

sobes.tech AI

В Kotlin корутинах для обработки исключений можно использовать блоки try-catch внутри самой корутины или применять специальные конструкции, такие как CoroutineExceptionHandler.

Пример с try-catch внутри корутины:

launch {
    try {
        val result = someSuspendFunction()
        println(result)
    } catch (e: Exception) {
        println("Ошибка: ${e.message}")
    }
}

Если корутина запущена через launch, необработанные исключения передаются в CoroutineExceptionHandler:

val handler = CoroutineExceptionHandler { _, exception ->
    println("Обработано исключение: ${exception.message}")
}

GlobalScope.launch(handler) {
    throw RuntimeException("Ошибка в корутине")
}

Таким образом, можно гибко управлять ошибками в асинхронном коде.