Ответ
В Kotlin Flow исключения обрабатываются с помощью операторов catch и onCompletion.
Пример:
flow {
emit(1)
throw RuntimeException("Error!")
}
.catch { e ->
println("Caught exception: $e")
emit(-1) // можно эмитить fallback значение
}
.collect { value ->
println("Received: $value")
}
Нюансы:
catchперехватывает исключения выше по цепочке, но не ниже.onCompletionвызывается в любом случае (успех/ошибка), но не перехватывает исключения.- Для глобальной обработки можно использовать
CoroutineExceptionHandlerв корутине.
Если нужно перехватывать исключения в collect, оберни вызов в try-catch.