首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ZIO.fail不失败

ZIO.fail不失败
EN

Stack Overflow用户
提问于 2022-10-03 20:26:36
回答 1查看 92关注 0票数 0

我要学习zio图书馆的refineXXX。为此,我编写了简单的代码。

代码语言:javascript
复制
import zio.ZIOAppDefault
import zio.Unsafe.unsafe
import zio._

import java.sql.SQLException

object Bot extends ZIOAppDefault {

  val codeWithExc: ZIO[Any,Throwable,Int] =
    ZIO.fail(new SQLException("message of SQL error."))

  val MainApp: ZIO[Any, Throwable, Int] = for {
    _ <- Console.printLine("Begin")
    res <- codeWithExc
    _ <- Console.printLine(s" res = $res")
  } yield res

  def run: URIO[ZIOAppArgs, ExitCode] =
    for {
      res <- MainApp.exitCode
    } yield res

}

unsafe{ implicit u =>
  Runtime.default.unsafe.run(Bot.run.provide(ZIOAppArgs.empty))
}

当我在IDEA工作表中运行它时,我会看到输出:

代码语言:javascript
复制
Begin
res0: zio.Exit[Nothing,zio.ExitCode] = Success(ExitCode(1))

预期在res <- codeWithExc失败和主要纤维死亡。

EN

回答 1

Stack Overflow用户

发布于 2022-10-04 19:51:02

这里的问题是,您正在将ZIO映射到.exitCode,后者返回不能真正失败的URIO。失败将映射到成功,而告诉它确实失败的唯一原因是验证ExitCode不是0。如果您更改您的代码并将其替换为如下所示,它将看起来工作正常:

代码语言:javascript
复制
 def run = MainApp
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73940507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档