Можно ли переопределить поведение при возникновении ошибки в корутине

«Можно ли переопределить поведение при возникновении ошибки в корутине» — вопрос из категории Coroutines и Flow, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, можно. Для обработки ошибок в корутинах используется try-catch или CoroutineExceptionHandler.

Пример с try-catch:

scope.launch {
    try {
        // код, который может выбросить исключение
    } catch (e: Exception) {
        // обработка ошибки
    }
}

Пример с CoroutineExceptionHandler:

val handler = CoroutineExceptionHandler { _, exception ->
    // обработка ошибки
}
scope.launch(handler) {
    // код, который может выбросить исключение
}

Важно: CoroutineExceptionHandler работает только для корутин верхнего уровня (не дочерних). Для дочерних корутин используйте supervisorScope или SupervisorJob.