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