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

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

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

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

sobes.tech AI

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

Пример использования:

val handler = CoroutineExceptionHandler { _, exception ->
    println("Поймано исключение: ${exception.localizedMessage}")
}

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

Важно помнить, что CoroutineExceptionHandler работает только с корутинами, запущенными через launch, так как async возвращает Deferred, и исключения из него нужно обрабатывать через await.

Таким образом, CoroutineExceptionHandler позволяет централизованно обрабатывать необработанные исключения в корутинах, предотвращая крах приложения и обеспечивая удобный механизм логирования или восстановления.