arrow-fx-coroutines / arrow.fx.coroutines.stream / handleErrorWith

handleErrorWith

fun <O, R> Pull<O, R>.handleErrorWith(f: (Throwable) -> Pull<O, R>): Pull<O, R>fun <O> Stream<O>.handleErrorWith(h: (Throwable) -> Stream<O>): Stream<O>

If this Stream terminates with Stream.raiseError`, invoke h and continue with result.

import arrow.fx.coroutines.stream.*

//sampleStart
suspend fun main(): Unit =
  Stream(1, 2, 3)
    .append { Stream.raiseError(RuntimeException()) }
    .handleErrorWith { _: Throwable -> Stream.just(0) }
    .toList()
    .let(::println) // [1, 2, 3, 0]
//sampleEnd

Do you like Arrow?

Arrow Org
<