Проверяет знание средств управления ошибками в реактивном потоке.
Для обработки ошибок во Flow используют операторы catch {} для перехвата и замены исключений, retry {} или retryWhen {} для повторения эмиссии при ошибках и onCompletion {} для завершающих действий независимо от успеха или ошибки.
1. catch
flow { emit(fetch()) }
.catch { e -> emit(defaultValue) }2. retry / retryWhen
flow { emit(fetch()) }
.retry(3) { e -> e is IOException }3. onCompletion
flowOf(1,2,3)
.onCompletion { cause -> log(cause) }4. Порядок операторов:
retry до catch, catch до onCompletion