scala
libraryDependencies += "dev.zio" %% "zio" % "1.0.0-RC22-1"
scala
import zio._
object MyZIOApp extends App {
val myTask: ZIO[Any, Throwable, String] = ZIO.effectTotal("Hello, ZIO!")
override def run(args: List[String]): URIO[ZEnv, ExitCode] =
myTask.foldM(
e => ZIO.effect(println(s"Execution failed with: $e")) *> ZIO.succeed(ExitCode.failure),
res => ZIO.effect(println(res)) *> ZIO.succeed(ExitCode.success)
)
}
scala
val myTask: ZIO[Any, Throwable, String] = ZIO.effectTotal(5 / 0)
val recovered: ZIO[Any, String, String] = myTask.catchAll(_ => ZIO.succeed("Divide by zero error!"))
scala
val task1: ZIO[Any, Throwable, String] = ZIO.effectTotal("Hello")
val task2: ZIO[Any, Throwable, String] = ZIO.effectTotal("ZIO!")
val combined: ZIO[Any, Throwable, String] = task1.zip(task2).map { case (res1, res2) => s"$res1 $res2" }