Как и когда применять Flow.catch для обработки ошибок
Если upstream flow завершился исключением, оператор catch перехватывает это исключение и выполняет заданный suspend-обработчик с ним.
Действие catch выполняется как try { upstream } catch (e) { action(e) }, при этом оно прозрачно к исключениям, возникшим в downstream, и не ловит исключения, посланные на отмену потока.
Внутри action у вас есть FlowCollector для emit/emitAll; после исключения исходный поток не сможет эмитить значения, и вы можете либо эмитить fallback-значения, либо повторно бросить исключение.
• catch ловит только исключения upstream, не downstream.
• action может эмитить значения или использовать emitAll как fallback.
#Kotlin